Lazily create the WebGL helper

This commit is contained in:
Tim Schaub
2021-11-13 11:14:59 -07:00
parent 1d94477ed3
commit 0dfbedb099
10 changed files with 236 additions and 72 deletions

View File

@@ -75,7 +75,7 @@ const hitFragmentShader = `
gl_FragColor = v_hitColor;
}`;
describe('ol.renderer.webgl.PointsLayer', function () {
describe('ol/renderer/webgl/PointsLayer', function () {
describe('constructor', function () {
let target;
@@ -116,16 +116,16 @@ describe('ol.renderer.webgl.PointsLayer', function () {
hitVertexShader: hitVertexShader,
hitFragmentShader: hitFragmentShader,
});
frameState = Object.assign(
{
size: [2, 2],
extent: [-100, -100, 100, 100],
},
baseFrameState
);
frameState = Object.assign({}, baseFrameState, {
size: [2, 2],
extent: [-100, -100, 100, 100],
layerStatesArray: [layer.getLayerState()],
});
});
it('calls WebGlHelper#prepareDraw', function () {
renderer.prepareFrame(frameState);
const spy = sinon.spy(renderer.helper, 'prepareDraw');
renderer.prepareFrame(frameState);
expect(spy.called).to.be(true);
@@ -327,14 +327,12 @@ describe('ol.renderer.webgl.PointsLayer', function () {
0,
0
);
const frameState = Object.assign(
{
extent: [-20, -20, 20, 20],
size: [40, 40],
coordinateToPixelTransform: transform,
},
baseFrameState
);
const frameState = Object.assign({}, baseFrameState, {
extent: [-20, -20, 20, 20],
size: [40, 40],
coordinateToPixelTransform: transform,
layerStatesArray: [layer.getLayerState()],
});
renderer.prepareFrame(frameState);
renderer.worker_.addEventListener('message', function () {
@@ -391,15 +389,14 @@ describe('ol.renderer.webgl.PointsLayer', function () {
0,
0
);
const frameState = Object.assign(
{
pixelRatio: 3,
extent: [-20, -20, 20, 20],
size: [40, 40],
coordinateToPixelTransform: transform,
},
baseFrameState
);
const frameState = Object.assign({}, baseFrameState, {
pixelRatio: 3,
extent: [-20, -20, 20, 20],
size: [40, 40],
coordinateToPixelTransform: transform,
layerStatesArray: [layer.getLayerState()],
});
let found;
const cb = function (feature) {
found = feature;
@@ -446,6 +443,13 @@ describe('ol.renderer.webgl.PointsLayer', function () {
fragmentShader: simpleFragmentShader,
});
const frameState = Object.assign({}, baseFrameState, {
size: [2, 2],
extent: [-100, -100, 100, 100],
layerStatesArray: [layer.getLayerState()],
});
renderer.prepareFrame(frameState);
const spyHelper = sinon.spy(renderer.helper, 'disposeInternal');
const spyWorker = sinon.spy(renderer.worker_, 'terminate');
renderer.disposeInternal();

View File

@@ -7,7 +7,7 @@ import {create} from '../../../../../../src/ol/transform.js';
import {createCanvasContext2D} from '../../../../../../src/ol/dom.js';
import {get} from '../../../../../../src/ol/proj.js';
describe('ol.renderer.webgl.TileLayer', function () {
describe('ol/renderer/webgl/TileLayer', function () {
/** @type {import("../../../../../../src/ol/renderer/webgl/TileLayer.js").default} */
let renderer;
/** @type {WebGLTileLayer} */
@@ -74,6 +74,9 @@ describe('ol.renderer.webgl.TileLayer', function () {
});
it('#renderFrame()', function () {
const ready = renderer.prepareFrame(frameState);
expect(ready).to.be(true);
const rendered = renderer.renderFrame(frameState);
expect(rendered).to.be.a(HTMLCanvasElement);
expect(frameState.tileQueue.getCount()).to.be(1);