Remove ol.layer.Vector2 and associated renderer
This commit is contained in:
@@ -1 +0,0 @@
|
||||
@exportSymbol ol.layer.Vector2
|
||||
@@ -1,26 +0,0 @@
|
||||
goog.provide('ol.layer.Vector2');
|
||||
|
||||
goog.require('ol.layer.Layer');
|
||||
goog.require('ol.source.Vector2');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This is an internal class that will be removed from the API.
|
||||
* @constructor
|
||||
* @extends {ol.layer.Layer}
|
||||
* @param {ol.layer.LayerOptions} options Options.
|
||||
* @todo stability experimental
|
||||
*/
|
||||
ol.layer.Vector2 = function(options) {
|
||||
goog.base(this, options);
|
||||
};
|
||||
goog.inherits(ol.layer.Vector2, ol.layer.Layer);
|
||||
|
||||
|
||||
/**
|
||||
* @return {ol.source.Vector2} Source.
|
||||
*/
|
||||
ol.layer.Vector2.prototype.getVectorSource = function() {
|
||||
return /** @type {ol.source.Vector2} */ (this.getSource());
|
||||
};
|
||||
@@ -19,11 +19,9 @@ goog.require('ol.Tile');
|
||||
goog.require('ol.css');
|
||||
goog.require('ol.layer.Image');
|
||||
goog.require('ol.layer.Tile');
|
||||
goog.require('ol.layer.Vector2');
|
||||
goog.require('ol.renderer.Map');
|
||||
goog.require('ol.renderer.webgl.ImageLayer');
|
||||
goog.require('ol.renderer.webgl.TileLayer');
|
||||
goog.require('ol.renderer.webgl.VectorLayer2');
|
||||
goog.require('ol.renderer.webgl.map.shader.Color');
|
||||
goog.require('ol.renderer.webgl.map.shader.Default');
|
||||
goog.require('ol.size');
|
||||
@@ -305,8 +303,6 @@ ol.renderer.webgl.Map.prototype.createLayerRenderer = function(layer) {
|
||||
return new ol.renderer.webgl.TileLayer(this, layer);
|
||||
} else if (layer instanceof ol.layer.Image) {
|
||||
return new ol.renderer.webgl.ImageLayer(this, layer);
|
||||
} else if (layer instanceof ol.layer.Vector2) {
|
||||
return new ol.renderer.webgl.VectorLayer2(this, layer);
|
||||
} else {
|
||||
goog.asserts.fail();
|
||||
return null;
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
//! NAMESPACE=ol.renderer.webgl.vectorlayer2.shader.LineStringCollection
|
||||
//! CLASS=ol.renderer.webgl.vectorlayer2.shader.LineStringCollection
|
||||
|
||||
|
||||
//! VERTEX
|
||||
attribute vec2 a_position;
|
||||
uniform mat4 u_modelViewMatrix;
|
||||
|
||||
void main(void) {
|
||||
gl_Position = u_modelViewMatrix * vec4(a_position, 0., 1.);
|
||||
}
|
||||
|
||||
|
||||
//! FRAGMENT
|
||||
uniform vec4 u_color;
|
||||
|
||||
void main(void) {
|
||||
gl_FragColor = u_color;
|
||||
}
|
||||
@@ -1,102 +0,0 @@
|
||||
// This file is automatically generated, do not edit
|
||||
goog.provide('ol.renderer.webgl.vectorlayer2.shader.LineStringCollection');
|
||||
|
||||
goog.require('ol.webgl.shader');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {ol.webgl.shader.Fragment}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment = function() {
|
||||
goog.base(this, ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.SOURCE);
|
||||
};
|
||||
goog.inherits(ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment, ol.webgl.shader.Fragment);
|
||||
goog.addSingletonGetter(ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment);
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.DEBUG_SOURCE = 'precision mediump float;\nuniform vec4 u_color;\n\nvoid main(void) {\n gl_FragColor = u_color;\n}\n';
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.OPTIMIZED_SOURCE = 'precision mediump float;uniform vec4 c;void main(void){gl_FragColor=c;}';
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.SOURCE = goog.DEBUG ?
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.DEBUG_SOURCE :
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionFragment.OPTIMIZED_SOURCE;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {ol.webgl.shader.Vertex}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex = function() {
|
||||
goog.base(this, ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.SOURCE);
|
||||
};
|
||||
goog.inherits(ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex, ol.webgl.shader.Vertex);
|
||||
goog.addSingletonGetter(ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex);
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.DEBUG_SOURCE = 'attribute vec2 a_position;\nuniform mat4 u_modelViewMatrix;\n\nvoid main(void) {\n gl_Position = u_modelViewMatrix * vec4(a_position, 0., 1.);\n}\n\n\n';
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.OPTIMIZED_SOURCE = 'attribute vec2 a;uniform mat4 b;void main(void){gl_Position=b*vec4(a,0.,1.);}';
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.SOURCE = goog.DEBUG ?
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.DEBUG_SOURCE :
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollectionVertex.OPTIMIZED_SOURCE;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {WebGLRenderingContext} gl GL.
|
||||
* @param {WebGLProgram} program Program.
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.LineStringCollection.Locations = function(gl, program) {
|
||||
|
||||
/**
|
||||
* @type {WebGLUniformLocation}
|
||||
*/
|
||||
this.u_color = gl.getUniformLocation(
|
||||
program, goog.DEBUG ? 'u_color' : 'c');
|
||||
|
||||
/**
|
||||
* @type {WebGLUniformLocation}
|
||||
*/
|
||||
this.u_modelViewMatrix = gl.getUniformLocation(
|
||||
program, goog.DEBUG ? 'u_modelViewMatrix' : 'b');
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
*/
|
||||
this.a_position = gl.getAttribLocation(
|
||||
program, goog.DEBUG ? 'a_position' : 'a');
|
||||
};
|
||||
@@ -1,21 +0,0 @@
|
||||
//! NAMESPACE=ol.renderer.webgl.vectorlayer2.shader.PointCollection
|
||||
//! CLASS=ol.renderer.webgl.vectorlayer2.shader.PointCollection
|
||||
|
||||
|
||||
//! VERTEX
|
||||
attribute vec2 a_position;
|
||||
uniform float u_pointSize;
|
||||
uniform mat4 u_modelViewMatrix;
|
||||
|
||||
void main(void) {
|
||||
gl_Position = u_modelViewMatrix * vec4(a_position, 0., 1.);
|
||||
gl_PointSize = u_pointSize;
|
||||
}
|
||||
|
||||
|
||||
//! FRAGMENT
|
||||
uniform vec4 u_color;
|
||||
|
||||
void main(void) {
|
||||
gl_FragColor = u_color;
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
// This file is automatically generated, do not edit
|
||||
goog.provide('ol.renderer.webgl.vectorlayer2.shader.PointCollection');
|
||||
|
||||
goog.require('ol.webgl.shader');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {ol.webgl.shader.Fragment}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment = function() {
|
||||
goog.base(this, ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.SOURCE);
|
||||
};
|
||||
goog.inherits(ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment, ol.webgl.shader.Fragment);
|
||||
goog.addSingletonGetter(ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment);
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.DEBUG_SOURCE = 'precision mediump float;\nuniform vec4 u_color;\n\nvoid main(void) {\n gl_FragColor = u_color;\n}\n';
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.OPTIMIZED_SOURCE = 'precision mediump float;uniform vec4 d;void main(void){gl_FragColor=d;}';
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.SOURCE = goog.DEBUG ?
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.DEBUG_SOURCE :
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionFragment.OPTIMIZED_SOURCE;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {ol.webgl.shader.Vertex}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex = function() {
|
||||
goog.base(this, ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.SOURCE);
|
||||
};
|
||||
goog.inherits(ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex, ol.webgl.shader.Vertex);
|
||||
goog.addSingletonGetter(ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex);
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.DEBUG_SOURCE = 'attribute vec2 a_position;\nuniform float u_pointSize;\nuniform mat4 u_modelViewMatrix;\n\nvoid main(void) {\n gl_Position = u_modelViewMatrix * vec4(a_position, 0., 1.);\n gl_PointSize = u_pointSize;\n}\n\n\n';
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.OPTIMIZED_SOURCE = 'attribute vec2 a;uniform float b;uniform mat4 c;void main(void){gl_Position=c*vec4(a,0.,1.);gl_PointSize=b;}';
|
||||
|
||||
|
||||
/**
|
||||
* @const
|
||||
* @type {string}
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.SOURCE = goog.DEBUG ?
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.DEBUG_SOURCE :
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollectionVertex.OPTIMIZED_SOURCE;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {WebGLRenderingContext} gl GL.
|
||||
* @param {WebGLProgram} program Program.
|
||||
*/
|
||||
ol.renderer.webgl.vectorlayer2.shader.PointCollection.Locations = function(gl, program) {
|
||||
|
||||
/**
|
||||
* @type {WebGLUniformLocation}
|
||||
*/
|
||||
this.u_color = gl.getUniformLocation(
|
||||
program, goog.DEBUG ? 'u_color' : 'd');
|
||||
|
||||
/**
|
||||
* @type {WebGLUniformLocation}
|
||||
*/
|
||||
this.u_modelViewMatrix = gl.getUniformLocation(
|
||||
program, goog.DEBUG ? 'u_modelViewMatrix' : 'c');
|
||||
|
||||
/**
|
||||
* @type {WebGLUniformLocation}
|
||||
*/
|
||||
this.u_pointSize = gl.getUniformLocation(
|
||||
program, goog.DEBUG ? 'u_pointSize' : 'b');
|
||||
|
||||
/**
|
||||
* @type {number}
|
||||
*/
|
||||
this.a_position = gl.getAttribLocation(
|
||||
program, goog.DEBUG ? 'a_position' : 'a');
|
||||
};
|
||||
@@ -1,219 +0,0 @@
|
||||
goog.provide('ol.renderer.webgl.VectorLayer2');
|
||||
|
||||
goog.require('goog.vec.Mat4');
|
||||
goog.require('goog.webgl');
|
||||
goog.require('ol.math');
|
||||
goog.require('ol.renderer.webgl.Layer');
|
||||
goog.require('ol.renderer.webgl.vectorlayer2.shader.LineStringCollection');
|
||||
goog.require('ol.renderer.webgl.vectorlayer2.shader.PointCollection');
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {ol.renderer.webgl.Layer}
|
||||
* @param {ol.renderer.Map} mapRenderer Map renderer.
|
||||
* @param {ol.layer.Vector2} vectorLayer2 Vector layer.
|
||||
*/
|
||||
ol.renderer.webgl.VectorLayer2 = function(mapRenderer, vectorLayer2) {
|
||||
|
||||
goog.base(this, mapRenderer, vectorLayer2);
|
||||
|
||||
goog.vec.Mat4.makeIdentity(this.projectionMatrix);
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {!goog.vec.Mat4.Number}
|
||||
*/
|
||||
this.modelViewMatrix_ = goog.vec.Mat4.createNumberIdentity();
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type
|
||||
* {ol.renderer.webgl.vectorlayer2.shader.LineStringCollection.Locations}
|
||||
*/
|
||||
this.lineStringCollectionLocations_ = null;
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @type {ol.renderer.webgl.vectorlayer2.shader.PointCollection.Locations}
|
||||
*/
|
||||
this.pointCollectionLocations_ = null;
|
||||
|
||||
};
|
||||
goog.inherits(ol.renderer.webgl.VectorLayer2, ol.renderer.webgl.Layer);
|
||||
|
||||
|
||||
/**
|
||||
* @return {ol.layer.Vector2} Vector layer.
|
||||
*/
|
||||
ol.renderer.webgl.VectorLayer2.prototype.getVectorLayer = function() {
|
||||
return /** @type {ol.layer.Vector2} */ (this.getLayer());
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.renderer.webgl.VectorLayer2.prototype.handleWebGLContextLost = function() {
|
||||
goog.base(this, 'handleWebGLContextLost');
|
||||
this.pointCollectionLocations_ = null;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
ol.renderer.webgl.VectorLayer2.prototype.renderFrame =
|
||||
function(frameState, layerState) {
|
||||
|
||||
var mapRenderer = this.getWebGLMapRenderer();
|
||||
var gl = mapRenderer.getGL();
|
||||
|
||||
var view2DState = frameState.view2DState;
|
||||
|
||||
var vectorLayer = this.getVectorLayer();
|
||||
var vectorSource = vectorLayer.getVectorSource();
|
||||
|
||||
var size = frameState.size;
|
||||
var framebufferDimension = ol.math.roundUpToPowerOfTwo(
|
||||
Math.max(size[0], size[1]));
|
||||
|
||||
this.bindFramebuffer(frameState, framebufferDimension);
|
||||
gl.viewport(0, 0, framebufferDimension, framebufferDimension);
|
||||
|
||||
gl.clearColor(0, 0, 0, 0);
|
||||
gl.clear(goog.webgl.COLOR_BUFFER_BIT);
|
||||
gl.enable(goog.webgl.BLEND);
|
||||
|
||||
goog.vec.Mat4.makeIdentity(this.modelViewMatrix_);
|
||||
if (view2DState.rotation !== 0) {
|
||||
goog.vec.Mat4.rotateZ(this.modelViewMatrix_, -view2DState.rotation);
|
||||
}
|
||||
goog.vec.Mat4.scale(this.modelViewMatrix_,
|
||||
2 / (framebufferDimension * view2DState.resolution),
|
||||
2 / (framebufferDimension * view2DState.resolution),
|
||||
1);
|
||||
goog.vec.Mat4.translate(this.modelViewMatrix_,
|
||||
-view2DState.center[0],
|
||||
-view2DState.center[1],
|
||||
0);
|
||||
|
||||
var pointCollections = vectorSource.getPointCollections();
|
||||
if (pointCollections.length > 0) {
|
||||
this.renderPointCollections(pointCollections);
|
||||
}
|
||||
var lineStringCollections = vectorSource.getLineStringCollections();
|
||||
if (lineStringCollections.length > 0) {
|
||||
this.renderLineStringCollections(lineStringCollections);
|
||||
}
|
||||
|
||||
goog.vec.Mat4.makeIdentity(this.texCoordMatrix);
|
||||
goog.vec.Mat4.translate(this.texCoordMatrix,
|
||||
0.5,
|
||||
0.5,
|
||||
0);
|
||||
goog.vec.Mat4.scale(this.texCoordMatrix,
|
||||
size[0] / framebufferDimension,
|
||||
size[1] / framebufferDimension,
|
||||
1);
|
||||
goog.vec.Mat4.translate(this.texCoordMatrix,
|
||||
-0.5,
|
||||
-0.5,
|
||||
0);
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {Array.<ol.geom2.LineStringCollection>} lineStringCollections Line
|
||||
* string collections.
|
||||
*/
|
||||
ol.renderer.webgl.VectorLayer2.prototype.renderLineStringCollections =
|
||||
function(lineStringCollections) {
|
||||
|
||||
var mapRenderer = this.getWebGLMapRenderer();
|
||||
var gl = mapRenderer.getGL();
|
||||
|
||||
var fragmentShader = ol.renderer.webgl.vectorlayer2.shader.
|
||||
LineStringCollectionFragment.getInstance();
|
||||
var vertexShader = ol.renderer.webgl.vectorlayer2.shader.
|
||||
LineStringCollectionVertex.getInstance();
|
||||
var program = mapRenderer.getProgram(fragmentShader, vertexShader);
|
||||
gl.useProgram(program);
|
||||
if (goog.isNull(this.lineStringCollectionLocations_)) {
|
||||
this.lineStringCollectionLocations_ =
|
||||
new ol.renderer.webgl.vectorlayer2.shader.LineStringCollection.
|
||||
Locations(gl, program);
|
||||
}
|
||||
|
||||
gl.uniformMatrix4fv(this.lineStringCollectionLocations_.u_modelViewMatrix,
|
||||
false, this.modelViewMatrix_);
|
||||
|
||||
var buf, dim, i, indexBuffer, indices, lineStringCollection;
|
||||
for (i = 0; i < lineStringCollections.length; ++i) {
|
||||
lineStringCollection = lineStringCollections[i];
|
||||
buf = lineStringCollection.buf;
|
||||
dim = lineStringCollection.dim;
|
||||
mapRenderer.bindBuffer(goog.webgl.ARRAY_BUFFER, buf);
|
||||
// FIXME re-use index buffer
|
||||
// FIXME use mapRenderer.bindBuffer
|
||||
indices = lineStringCollection.getIndices();
|
||||
indexBuffer = gl.createBuffer();
|
||||
gl.bindBuffer(goog.webgl.ELEMENT_ARRAY_BUFFER, indexBuffer);
|
||||
gl.bufferData(
|
||||
goog.webgl.ELEMENT_ARRAY_BUFFER, indices, goog.webgl.DYNAMIC_DRAW);
|
||||
gl.enableVertexAttribArray(this.lineStringCollectionLocations_.a_position);
|
||||
gl.vertexAttribPointer(this.lineStringCollectionLocations_.a_position, 2,
|
||||
goog.webgl.FLOAT, false, 4 * dim, 0);
|
||||
gl.uniform4fv(this.lineStringCollectionLocations_.u_color, [1, 1, 0, 0.75]);
|
||||
gl.drawElements(
|
||||
goog.webgl.LINES, indices.length, goog.webgl.UNSIGNED_SHORT, 0);
|
||||
gl.bindBuffer(goog.webgl.ELEMENT_ARRAY_BUFFER, null);
|
||||
gl.deleteBuffer(indexBuffer);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @param {Array.<ol.geom2.PointCollection>} pointCollections Point collections.
|
||||
*/
|
||||
ol.renderer.webgl.VectorLayer2.prototype.renderPointCollections =
|
||||
function(pointCollections) {
|
||||
|
||||
var mapRenderer = this.getWebGLMapRenderer();
|
||||
var gl = mapRenderer.getGL();
|
||||
|
||||
var fragmentShader = ol.renderer.webgl.vectorlayer2.shader.
|
||||
PointCollectionFragment.getInstance();
|
||||
var vertexShader = ol.renderer.webgl.vectorlayer2.shader.
|
||||
PointCollectionVertex.getInstance();
|
||||
var program = mapRenderer.getProgram(fragmentShader, vertexShader);
|
||||
gl.useProgram(program);
|
||||
if (goog.isNull(this.pointCollectionLocations_)) {
|
||||
this.pointCollectionLocations_ =
|
||||
new ol.renderer.webgl.vectorlayer2.shader.PointCollection.Locations(
|
||||
gl, program);
|
||||
}
|
||||
|
||||
gl.uniformMatrix4fv(this.pointCollectionLocations_.u_modelViewMatrix, false,
|
||||
this.modelViewMatrix_);
|
||||
|
||||
var buf, dim, i, pointCollection;
|
||||
for (i = 0; i < pointCollections.length; ++i) {
|
||||
pointCollection = pointCollections[i];
|
||||
buf = pointCollection.buf;
|
||||
dim = pointCollection.dim;
|
||||
mapRenderer.bindBuffer(goog.webgl.ARRAY_BUFFER, buf);
|
||||
gl.enableVertexAttribArray(this.pointCollectionLocations_.a_position);
|
||||
gl.vertexAttribPointer(this.pointCollectionLocations_.a_position, 2,
|
||||
goog.webgl.FLOAT, false, 4 * dim, 0);
|
||||
gl.uniform4fv(this.pointCollectionLocations_.u_color, [1, 0, 0, 0.75]);
|
||||
gl.uniform1f(this.pointCollectionLocations_.u_pointSize, 3);
|
||||
buf.forEachRange(function(start, stop) {
|
||||
gl.drawArrays(goog.webgl.POINTS, start / dim, (stop - start) / dim);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user