Make some adaptations to the PointsLayer renderer to make it work
This commit is contained in:
@@ -5,11 +5,7 @@ import BaseVector from '../../layer/BaseVector.js';
|
|||||||
import VectorEventType from '../../source/VectorEventType.js';
|
import VectorEventType from '../../source/VectorEventType.js';
|
||||||
import ViewHint from '../../ViewHint.js';
|
import ViewHint from '../../ViewHint.js';
|
||||||
import WebGLArrayBuffer from '../../webgl/Buffer.js';
|
import WebGLArrayBuffer from '../../webgl/Buffer.js';
|
||||||
import WebGLLayerRenderer, {
|
import WebGLLayerRenderer from './Layer.js';
|
||||||
WebGLWorkerMessageType,
|
|
||||||
colorDecodeId,
|
|
||||||
colorEncodeId,
|
|
||||||
} from './Layer.js';
|
|
||||||
import WebGLRenderTarget from '../../webgl/RenderTarget.js';
|
import WebGLRenderTarget from '../../webgl/RenderTarget.js';
|
||||||
import {ARRAY_BUFFER, DYNAMIC_DRAW, ELEMENT_ARRAY_BUFFER} from '../../webgl.js';
|
import {ARRAY_BUFFER, DYNAMIC_DRAW, ELEMENT_ARRAY_BUFFER} from '../../webgl.js';
|
||||||
import {AttributeType, DefaultUniform} from '../../webgl/Helper.js';
|
import {AttributeType, DefaultUniform} from '../../webgl/Helper.js';
|
||||||
@@ -25,6 +21,8 @@ import {buffer, createEmpty, equals, getWidth} from '../../extent.js';
|
|||||||
import {create as createWebGLWorker} from '../../worker/webgl.js';
|
import {create as createWebGLWorker} from '../../worker/webgl.js';
|
||||||
import {getUid} from '../../util.js';
|
import {getUid} from '../../util.js';
|
||||||
import {listen, unlistenByKey} from '../../events.js';
|
import {listen, unlistenByKey} from '../../events.js';
|
||||||
|
import {colorDecodeId, colorEncodeId} from '../../render/webgl/utils.js';
|
||||||
|
import {WebGLWorkerMessageType} from '../../render/webgl/constants.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} CustomAttribute A description of a custom attribute to be passed on to the GPU, with a value different
|
* @typedef {Object} CustomAttribute A description of a custom attribute to be passed on to the GPU, with a value different
|
||||||
@@ -303,7 +301,7 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
|
|||||||
*/
|
*/
|
||||||
function (event) {
|
function (event) {
|
||||||
const received = event.data;
|
const received = event.data;
|
||||||
if (received.type === WebGLWorkerMessageType.GENERATE_BUFFERS) {
|
if (received.type === WebGLWorkerMessageType.GENERATE_POINT_BUFFERS) {
|
||||||
const projectionTransform = received.projectionTransform;
|
const projectionTransform = received.projectionTransform;
|
||||||
if (received.hitDetection) {
|
if (received.hitDetection) {
|
||||||
this.hitVerticesBuffer_.fromArrayBuffer(received.vertexBuffer);
|
this.hitVerticesBuffer_.fromArrayBuffer(received.vertexBuffer);
|
||||||
@@ -637,9 +635,10 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @type {import('./Layer').WebGLWorkerGenerateBuffersMessage} */
|
/** @type {import('../../render/webgl/constants.js').WebGLWorkerGenerateBuffersMessage} */
|
||||||
const message = {
|
const message = {
|
||||||
type: WebGLWorkerMessageType.GENERATE_BUFFERS,
|
id: 0,
|
||||||
|
type: WebGLWorkerMessageType.GENERATE_POINT_BUFFERS,
|
||||||
renderInstructions: this.renderInstructions_.buffer,
|
renderInstructions: this.renderInstructions_.buffer,
|
||||||
customAttributesCount: this.customAttributes.length,
|
customAttributesCount: this.customAttributes.length,
|
||||||
};
|
};
|
||||||
@@ -650,10 +649,11 @@ class WebGLPointsLayerRenderer extends WebGLLayerRenderer {
|
|||||||
this.worker_.postMessage(message, [this.renderInstructions_.buffer]);
|
this.worker_.postMessage(message, [this.renderInstructions_.buffer]);
|
||||||
this.renderInstructions_ = null;
|
this.renderInstructions_ = null;
|
||||||
|
|
||||||
/** @type {import('./Layer').WebGLWorkerGenerateBuffersMessage} */
|
/** @type {import('../../render/webgl/constants.js').WebGLWorkerGenerateBuffersMessage} */
|
||||||
if (this.hitDetectionEnabled_) {
|
if (this.hitDetectionEnabled_) {
|
||||||
const hitMessage = {
|
const hitMessage = {
|
||||||
type: WebGLWorkerMessageType.GENERATE_BUFFERS,
|
id: 0,
|
||||||
|
type: WebGLWorkerMessageType.GENERATE_POINT_BUFFERS,
|
||||||
renderInstructions: this.hitRenderInstructions_.buffer,
|
renderInstructions: this.hitRenderInstructions_.buffer,
|
||||||
customAttributesCount: 5 + this.customAttributes.length,
|
customAttributesCount: 5 + this.customAttributes.length,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import View from '../../../../../../src/ol/View.js';
|
|||||||
import ViewHint from '../../../../../../src/ol/ViewHint.js';
|
import ViewHint from '../../../../../../src/ol/ViewHint.js';
|
||||||
import WebGLPointsLayer from '../../../../../../src/ol/layer/WebGLPoints.js';
|
import WebGLPointsLayer from '../../../../../../src/ol/layer/WebGLPoints.js';
|
||||||
import WebGLPointsLayerRenderer from '../../../../../../src/ol/renderer/webgl/PointsLayer.js';
|
import WebGLPointsLayerRenderer from '../../../../../../src/ol/renderer/webgl/PointsLayer.js';
|
||||||
import {WebGLWorkerMessageType} from '../../../../../../src/ol/renderer/webgl/Layer.js';
|
import {WebGLWorkerMessageType} from '../../../../../../src/ol/render/webgl/constants.js';
|
||||||
import {
|
import {
|
||||||
compose as composeTransform,
|
compose as composeTransform,
|
||||||
create as createTransform,
|
create as createTransform,
|
||||||
@@ -156,7 +156,7 @@ describe('ol/renderer/webgl/PointsLayer', function () {
|
|||||||
const attributePerVertex = 3;
|
const attributePerVertex = 3;
|
||||||
|
|
||||||
renderer.worker_.addEventListener('message', function (event) {
|
renderer.worker_.addEventListener('message', function (event) {
|
||||||
if (event.data.type !== WebGLWorkerMessageType.GENERATE_BUFFERS) {
|
if (event.data.type !== WebGLWorkerMessageType.GENERATE_POINT_BUFFERS) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
expect(renderer.verticesBuffer_.getArray().length).to.eql(
|
expect(renderer.verticesBuffer_.getArray().length).to.eql(
|
||||||
@@ -192,7 +192,7 @@ describe('ol/renderer/webgl/PointsLayer', function () {
|
|||||||
const attributePerVertex = 8;
|
const attributePerVertex = 8;
|
||||||
|
|
||||||
renderer.worker_.addEventListener('message', function (event) {
|
renderer.worker_.addEventListener('message', function (event) {
|
||||||
if (event.data.type !== WebGLWorkerMessageType.GENERATE_BUFFERS) {
|
if (event.data.type !== WebGLWorkerMessageType.GENERATE_POINT_BUFFERS) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!renderer.hitVerticesBuffer_.getArray()) {
|
if (!renderer.hitVerticesBuffer_.getArray()) {
|
||||||
@@ -231,7 +231,7 @@ describe('ol/renderer/webgl/PointsLayer', function () {
|
|||||||
renderer.prepareFrame(frameState);
|
renderer.prepareFrame(frameState);
|
||||||
|
|
||||||
renderer.worker_.addEventListener('message', function (event) {
|
renderer.worker_.addEventListener('message', function (event) {
|
||||||
if (event.data.type !== WebGLWorkerMessageType.GENERATE_BUFFERS) {
|
if (event.data.type !== WebGLWorkerMessageType.GENERATE_POINT_BUFFERS) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const attributePerVertex = 3;
|
const attributePerVertex = 3;
|
||||||
@@ -627,14 +627,14 @@ describe('ol/renderer/webgl/PointsLayer', function () {
|
|||||||
beforeEach(function () {
|
beforeEach(function () {
|
||||||
source = new VectorSource({
|
source = new VectorSource({
|
||||||
features: new GeoJSON().readFeatures({
|
features: new GeoJSON().readFeatures({
|
||||||
'type': 'FeatureCollection',
|
type: 'FeatureCollection',
|
||||||
'features': [
|
features: [
|
||||||
{
|
{
|
||||||
'type': 'Feature',
|
type: 'Feature',
|
||||||
'properties': {},
|
properties: {},
|
||||||
'geometry': {
|
geometry: {
|
||||||
'type': 'Point',
|
type: 'Point',
|
||||||
'coordinates': [13, 52],
|
coordinates: [13, 52],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user