Webgl points / use the new typed-array based utils for buffers
`rebuildBuffer` is still a very CPU intensive task and is blocking the main thread.
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
import Feature from '../../../../../src/ol/Feature.js';
|
||||
import Point from '../../../../../src/ol/geom/Point.js';
|
||||
import LineString from '../../../../../src/ol/geom/LineString.js';
|
||||
import VectorLayer from '../../../../../src/ol/layer/Vector.js';
|
||||
import VectorSource from '../../../../../src/ol/source/Vector.js';
|
||||
import WebGLPointsLayerRenderer from '../../../../../src/ol/renderer/webgl/PointsLayer.js';
|
||||
import {get as getProjection} from '../../../../../src/ol/proj.js';
|
||||
import Polygon from '../../../../../src/ol/geom/Polygon.js';
|
||||
import ViewHint from '../../../../../src/ol/ViewHint.js';
|
||||
|
||||
|
||||
@@ -52,9 +50,9 @@ describe('ol.renderer.webgl.PointsLayer', function() {
|
||||
projection: projection,
|
||||
resolution: 1,
|
||||
rotation: 0,
|
||||
center: [10, 10]
|
||||
center: [0, 0]
|
||||
},
|
||||
size: [256, 256],
|
||||
size: [2, 2],
|
||||
extent: [-100, -100, 100, 100]
|
||||
};
|
||||
});
|
||||
@@ -69,24 +67,19 @@ describe('ol.renderer.webgl.PointsLayer', function() {
|
||||
layer.getSource().addFeature(new Feature({
|
||||
geometry: new Point([10, 20])
|
||||
}));
|
||||
renderer.prepareFrame(frameState);
|
||||
|
||||
const attributePerVertex = 12;
|
||||
expect(renderer.verticesBuffer_.getArray().length).to.eql(4 * attributePerVertex);
|
||||
expect(renderer.indicesBuffer_.getArray().length).to.eql(6);
|
||||
});
|
||||
|
||||
it('ignores geometries other than points', function() {
|
||||
layer.getSource().addFeature(new Feature({
|
||||
geometry: new LineString([[10, 20], [30, 20]])
|
||||
}));
|
||||
layer.getSource().addFeature(new Feature({
|
||||
geometry: new Polygon([[10, 20], [30, 20], [30, 10], [10, 20]])
|
||||
geometry: new Point([30, 40])
|
||||
}));
|
||||
renderer.prepareFrame(frameState);
|
||||
|
||||
expect(renderer.verticesBuffer_.getArray().length).to.eql(0);
|
||||
expect(renderer.indicesBuffer_.getArray().length).to.eql(0);
|
||||
const attributePerVertex = POINT_VERTEX_STRIDE;
|
||||
expect(renderer.verticesBuffer_.getArray().length).to.eql(2 * 4 * attributePerVertex);
|
||||
expect(renderer.indicesBuffer_.getArray().length).to.eql(2 * 6);
|
||||
|
||||
expect(renderer.verticesBuffer_.getArray()[0]).to.eql(10);
|
||||
expect(renderer.verticesBuffer_.getArray()[1]).to.eql(20);
|
||||
expect(renderer.verticesBuffer_.getArray()[4 * attributePerVertex + 0]).to.eql(30);
|
||||
expect(renderer.verticesBuffer_.getArray()[4 * attributePerVertex + 1]).to.eql(40);
|
||||
});
|
||||
|
||||
it('clears the buffers when the features are gone', function() {
|
||||
|
||||
Reference in New Issue
Block a user