Replace goog.webgl

This commit is contained in:
Peter Robins
2016-07-02 10:25:15 +00:00
parent 512c442ccc
commit 294a129083
9 changed files with 332 additions and 79 deletions

View File

@@ -2,7 +2,6 @@ goog.provide('ol.renderer.webgl.ImageLayer');
goog.require('goog.asserts');
goog.require('ol.transform');
goog.require('goog.webgl');
goog.require('ol.ImageBase');
goog.require('ol.ViewHint');
goog.require('ol.dom');
@@ -12,6 +11,7 @@ goog.require('ol.layer.Image');
goog.require('ol.proj');
goog.require('ol.renderer.webgl.Layer');
goog.require('ol.source.ImageVector');
goog.require('ol.webgl');
goog.require('ol.webgl.Context');
@@ -63,7 +63,7 @@ ol.renderer.webgl.ImageLayer.prototype.createTexture_ = function(image) {
var gl = this.mapRenderer.getGL();
return ol.webgl.Context.createTexture(
gl, imageElement, goog.webgl.CLAMP_TO_EDGE, goog.webgl.CLAMP_TO_EDGE);
gl, imageElement, ol.webgl.CLAMP_TO_EDGE, ol.webgl.CLAMP_TO_EDGE);
};

View File

@@ -1,6 +1,5 @@
goog.provide('ol.renderer.webgl.Layer');
goog.require('goog.webgl');
goog.require('ol.layer.Layer');
goog.require('ol.transform');
goog.require('ol.render.Event');
@@ -12,6 +11,7 @@ goog.require('ol.renderer.webgl.map.shader.Default.Locations');
goog.require('ol.renderer.webgl.map.shader.DefaultFragment');
goog.require('ol.renderer.webgl.map.shader.DefaultVertex');
goog.require('ol.vec.Mat4');
goog.require('ol.webgl');
goog.require('ol.webgl.Buffer');
goog.require('ol.webgl.Context');
@@ -120,16 +120,16 @@ ol.renderer.webgl.Layer.prototype.bindFramebuffer = function(frameState, framebu
gl, framebufferDimension, framebufferDimension);
var framebuffer = gl.createFramebuffer();
gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, framebuffer);
gl.framebufferTexture2D(goog.webgl.FRAMEBUFFER,
goog.webgl.COLOR_ATTACHMENT0, goog.webgl.TEXTURE_2D, texture, 0);
gl.bindFramebuffer(ol.webgl.FRAMEBUFFER, framebuffer);
gl.framebufferTexture2D(ol.webgl.FRAMEBUFFER,
ol.webgl.COLOR_ATTACHMENT0, ol.webgl.TEXTURE_2D, texture, 0);
this.texture = texture;
this.framebuffer = framebuffer;
this.framebufferDimension = framebufferDimension;
} else {
gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, this.framebuffer);
gl.bindFramebuffer(ol.webgl.FRAMEBUFFER, this.framebuffer);
}
};
@@ -145,7 +145,7 @@ ol.renderer.webgl.Layer.prototype.composeFrame = function(frameState, layerState
this.dispatchComposeEvent_(
ol.render.EventType.PRECOMPOSE, context, frameState);
context.bindBuffer(goog.webgl.ARRAY_BUFFER, this.arrayBuffer_);
context.bindBuffer(ol.webgl.ARRAY_BUFFER, this.arrayBuffer_);
var gl = context.getGL();
@@ -167,10 +167,10 @@ ol.renderer.webgl.Layer.prototype.composeFrame = function(frameState, layerState
if (context.useProgram(program)) {
gl.enableVertexAttribArray(locations.a_position);
gl.vertexAttribPointer(
locations.a_position, 2, goog.webgl.FLOAT, false, 16, 0);
locations.a_position, 2, ol.webgl.FLOAT, false, 16, 0);
gl.enableVertexAttribArray(locations.a_texCoord);
gl.vertexAttribPointer(
locations.a_texCoord, 2, goog.webgl.FLOAT, false, 16, 8);
locations.a_texCoord, 2, ol.webgl.FLOAT, false, 16, 8);
gl.uniform1i(locations.u_texture, 0);
}
@@ -179,8 +179,8 @@ ol.renderer.webgl.Layer.prototype.composeFrame = function(frameState, layerState
gl.uniformMatrix4fv(locations.u_projectionMatrix, false,
ol.vec.Mat4.fromTransform(this.tmpMat4_, this.getProjectionMatrix()));
gl.uniform1f(locations.u_opacity, layerState.opacity);
gl.bindTexture(goog.webgl.TEXTURE_2D, this.getTexture());
gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4);
gl.bindTexture(ol.webgl.TEXTURE_2D, this.getTexture());
gl.drawArrays(ol.webgl.TRIANGLE_STRIP, 0, 4);
this.dispatchComposeEvent_(
ol.render.EventType.POSTCOMPOSE, context, frameState);

View File

@@ -3,7 +3,6 @@
goog.provide('ol.renderer.webgl.Map');
goog.require('goog.asserts');
goog.require('goog.webgl');
goog.require('ol');
goog.require('ol.RendererType');
goog.require('ol.array');
@@ -154,7 +153,7 @@ ol.renderer.webgl.Map = function(container, map) {
var tileSize = /** @type {ol.Size} */ (element[3]);
var tileGutter = /** @type {number} */ (element[4]);
this.bindTileTexture(
tile, tileSize, tileGutter, goog.webgl.LINEAR, goog.webgl.LINEAR);
tile, tileSize, tileGutter, ol.webgl.LINEAR, ol.webgl.LINEAR);
}
return false;
}.bind(this);
@@ -186,20 +185,20 @@ ol.renderer.webgl.Map.prototype.bindTileTexture = function(tile, tileSize, tileG
var textureCacheEntry = this.textureCache_.get(tileKey);
goog.asserts.assert(textureCacheEntry,
'a texture cache entry exists for key %s', tileKey);
gl.bindTexture(goog.webgl.TEXTURE_2D, textureCacheEntry.texture);
gl.bindTexture(ol.webgl.TEXTURE_2D, textureCacheEntry.texture);
if (textureCacheEntry.magFilter != magFilter) {
gl.texParameteri(
goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, magFilter);
ol.webgl.TEXTURE_2D, ol.webgl.TEXTURE_MAG_FILTER, magFilter);
textureCacheEntry.magFilter = magFilter;
}
if (textureCacheEntry.minFilter != minFilter) {
gl.texParameteri(
goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MIN_FILTER, minFilter);
ol.webgl.TEXTURE_2D, ol.webgl.TEXTURE_MIN_FILTER, minFilter);
textureCacheEntry.minFilter = minFilter;
}
} else {
var texture = gl.createTexture();
gl.bindTexture(goog.webgl.TEXTURE_2D, texture);
gl.bindTexture(ol.webgl.TEXTURE_2D, texture);
if (tileGutter > 0) {
var clipTileCanvas = this.clipTileContext_.canvas;
var clipTileContext = this.clipTileContext_;
@@ -214,22 +213,22 @@ ol.renderer.webgl.Map.prototype.bindTileTexture = function(tile, tileSize, tileG
}
clipTileContext.drawImage(tile.getImage(), tileGutter, tileGutter,
tileSize[0], tileSize[1], 0, 0, tileSize[0], tileSize[1]);
gl.texImage2D(goog.webgl.TEXTURE_2D, 0,
goog.webgl.RGBA, goog.webgl.RGBA,
goog.webgl.UNSIGNED_BYTE, clipTileCanvas);
gl.texImage2D(ol.webgl.TEXTURE_2D, 0,
ol.webgl.RGBA, ol.webgl.RGBA,
ol.webgl.UNSIGNED_BYTE, clipTileCanvas);
} else {
gl.texImage2D(goog.webgl.TEXTURE_2D, 0,
goog.webgl.RGBA, goog.webgl.RGBA,
goog.webgl.UNSIGNED_BYTE, tile.getImage());
gl.texImage2D(ol.webgl.TEXTURE_2D, 0,
ol.webgl.RGBA, ol.webgl.RGBA,
ol.webgl.UNSIGNED_BYTE, tile.getImage());
}
gl.texParameteri(
goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, magFilter);
ol.webgl.TEXTURE_2D, ol.webgl.TEXTURE_MAG_FILTER, magFilter);
gl.texParameteri(
goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MIN_FILTER, minFilter);
gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_S,
goog.webgl.CLAMP_TO_EDGE);
gl.texParameteri(goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_WRAP_T,
goog.webgl.CLAMP_TO_EDGE);
ol.webgl.TEXTURE_2D, ol.webgl.TEXTURE_MIN_FILTER, minFilter);
gl.texParameteri(ol.webgl.TEXTURE_2D, ol.webgl.TEXTURE_WRAP_S,
ol.webgl.CLAMP_TO_EDGE);
gl.texParameteri(ol.webgl.TEXTURE_2D, ol.webgl.TEXTURE_WRAP_T,
ol.webgl.CLAMP_TO_EDGE);
this.textureCache_.set(tileKey, {
texture: texture,
magFilter: magFilter,
@@ -394,14 +393,14 @@ ol.renderer.webgl.Map.prototype.handleWebGLContextRestored = function() {
*/
ol.renderer.webgl.Map.prototype.initializeGL_ = function() {
var gl = this.gl_;
gl.activeTexture(goog.webgl.TEXTURE0);
gl.activeTexture(ol.webgl.TEXTURE0);
gl.blendFuncSeparate(
goog.webgl.SRC_ALPHA, goog.webgl.ONE_MINUS_SRC_ALPHA,
goog.webgl.ONE, goog.webgl.ONE_MINUS_SRC_ALPHA);
gl.disable(goog.webgl.CULL_FACE);
gl.disable(goog.webgl.DEPTH_TEST);
gl.disable(goog.webgl.SCISSOR_TEST);
gl.disable(goog.webgl.STENCIL_TEST);
ol.webgl.SRC_ALPHA, ol.webgl.ONE_MINUS_SRC_ALPHA,
ol.webgl.ONE, ol.webgl.ONE_MINUS_SRC_ALPHA);
gl.disable(ol.webgl.CULL_FACE);
gl.disable(ol.webgl.DEPTH_TEST);
gl.disable(ol.webgl.SCISSOR_TEST);
gl.disable(ol.webgl.STENCIL_TEST);
};
@@ -468,11 +467,11 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
this.canvas_.height = height;
}
gl.bindFramebuffer(goog.webgl.FRAMEBUFFER, null);
gl.bindFramebuffer(ol.webgl.FRAMEBUFFER, null);
gl.clearColor(0, 0, 0, 0);
gl.clear(goog.webgl.COLOR_BUFFER_BIT);
gl.enable(goog.webgl.BLEND);
gl.clear(ol.webgl.COLOR_BUFFER_BIT);
gl.enable(ol.webgl.BLEND);
gl.viewport(0, 0, this.canvas_.width, this.canvas_.height);
for (i = 0, ii = layerStatesToDraw.length; i < ii; ++i) {

View File

@@ -5,7 +5,6 @@ goog.provide('ol.renderer.webgl.TileLayer');
goog.require('goog.asserts');
goog.require('ol.transform');
goog.require('goog.webgl');
goog.require('ol.TileRange');
goog.require('ol.TileState');
goog.require('ol.array');
@@ -17,6 +16,7 @@ goog.require('ol.renderer.webgl.tilelayer.shader.Fragment');
goog.require('ol.renderer.webgl.tilelayer.shader.Locations');
goog.require('ol.renderer.webgl.tilelayer.shader.Vertex');
goog.require('ol.size');
goog.require('ol.webgl');
goog.require('ol.webgl.Buffer');
@@ -209,8 +209,8 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame = function(frameState, layerS
gl.viewport(0, 0, framebufferDimension, framebufferDimension);
gl.clearColor(0, 0, 0, 0);
gl.clear(goog.webgl.COLOR_BUFFER_BIT);
gl.disable(goog.webgl.BLEND);
gl.clear(ol.webgl.COLOR_BUFFER_BIT);
gl.disable(ol.webgl.BLEND);
var program = context.getProgram(this.fragmentShader_, this.vertexShader_);
context.useProgram(program);
@@ -219,13 +219,13 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame = function(frameState, layerS
new ol.renderer.webgl.tilelayer.shader.Locations(gl, program);
}
context.bindBuffer(goog.webgl.ARRAY_BUFFER, this.renderArrayBuffer_);
context.bindBuffer(ol.webgl.ARRAY_BUFFER, this.renderArrayBuffer_);
gl.enableVertexAttribArray(this.locations_.a_position);
gl.vertexAttribPointer(
this.locations_.a_position, 2, goog.webgl.FLOAT, false, 16, 0);
this.locations_.a_position, 2, ol.webgl.FLOAT, false, 16, 0);
gl.enableVertexAttribArray(this.locations_.a_texCoord);
gl.vertexAttribPointer(
this.locations_.a_texCoord, 2, goog.webgl.FLOAT, false, 16, 8);
this.locations_.a_texCoord, 2, ol.webgl.FLOAT, false, 16, 8);
gl.uniform1i(this.locations_.u_texture, 0);
/**
@@ -309,8 +309,8 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame = function(frameState, layerS
framebufferExtentDimension - 1;
gl.uniform4fv(this.locations_.u_tileOffset, u_tileOffset);
mapRenderer.bindTileTexture(tile, tilePixelSize,
tileGutter * pixelRatio, goog.webgl.LINEAR, goog.webgl.LINEAR);
gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4);
tileGutter * pixelRatio, ol.webgl.LINEAR, ol.webgl.LINEAR);
gl.drawArrays(ol.webgl.TRIANGLE_STRIP, 0, 4);
}
}