WebGL / render multiple worlds to wrap X in vector renderer

From https://github.com/jahow/openlayers/pull/1

Adds logic in WebGLVectorLayerRenderer to handle multiple worlds visible at once.

Co-authored-by: Tomas Burleigh <t.burleigh@gmail.com>
Co-authored-by: Olivier Guyot <olivier.guyot@camptocamp.com>
This commit is contained in:
burleight
2022-04-01 20:22:43 +13:00
committed by Olivier Guyot
parent 7d2b1a9f48
commit 8769ea519e
3 changed files with 58 additions and 21 deletions

View File

@@ -10,7 +10,10 @@ import PolygonBatchRenderer from '../../../../../../src/ol/render/webgl/PolygonB
import WebGLHelper from '../../../../../../src/ol/webgl/Helper.js';
import {FLOAT} from '../../../../../../src/ol/webgl.js';
import {WebGLWorkerMessageType} from '../../../../../../src/ol/render/webgl/constants.js';
import {create as createTransform} from '../../../../../../src/ol/transform.js';
import {
create as createTransform,
translate as translateTransform,
} from '../../../../../../src/ol/transform.js';
import {create as createWebGLWorker} from '../../../../../../src/ol/worker/webgl.js';
const POINT_VERTEX_SHADER = `precision mediump float;
@@ -133,6 +136,8 @@ describe('Batch renderers', function () {
});
});
describe('#render (from parent)', function () {
let transform;
const offsetX = 12;
beforeEach(function () {
sinon.spy(helper, 'makeProjectionTransform');
sinon.spy(helper, 'useProgram');
@@ -140,16 +145,25 @@ describe('Batch renderers', function () {
sinon.spy(helper, 'enableAttributes');
sinon.spy(helper, 'drawElements');
const transform = createTransform();
transform = createTransform();
batchRenderer.render(
mixedBatch.pointBatch,
transform,
SAMPLE_FRAMESTATE
SAMPLE_FRAMESTATE,
offsetX
);
});
it('computes current transform', function () {
expect(helper.makeProjectionTransform.calledOnce).to.be(true);
});
it('includes the X offset in the transform used for rendering', function () {
const expected = helper.makeProjectionTransform(
SAMPLE_FRAMESTATE,
createTransform()
);
translateTransform(expected, offsetX, 0);
expect(transform).to.eql(expected);
});
it('computes sets up render parameters', function () {
expect(helper.useProgram.calledOnce).to.be(true);
expect(helper.enableAttributes.calledOnce).to.be(true);