diff --git a/src/ol/renderer/webgl/webglimagelayerrenderer.js b/src/ol/renderer/webgl/webglimagelayerrenderer.js index d63d5054d2..9138098168 100644 --- a/src/ol/renderer/webgl/webglimagelayerrenderer.js +++ b/src/ol/renderer/webgl/webglimagelayerrenderer.js @@ -169,12 +169,12 @@ ol.renderer.webgl.ImageLayer.prototype.updateProjectionMatrix_ = 2 / canvasExtentWidth, 2 / canvasExtentHeight, 1); goog.vec.Mat4.rotateZ(projectionMatrix, -viewRotation); goog.vec.Mat4.translate(projectionMatrix, - imageExtent[0] - viewCenter[0], - imageExtent[2] - viewCenter[1], + imageExtent[0][0] - viewCenter[0], + imageExtent[0][1] - viewCenter[1], 0); goog.vec.Mat4.scale(projectionMatrix, - (imageExtent[1] - imageExtent[0]) / 2, - (imageExtent[3] - imageExtent[2]) / 2, + (imageExtent[1][0] - imageExtent[0][0]) / 2, + (imageExtent[1][1] - imageExtent[0][1]) / 2, 1); goog.vec.Mat4.translate(projectionMatrix, 1, 1, 0); diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js index 915b75e0dd..6eed0df344 100644 --- a/src/ol/renderer/webgl/webgltilelayerrenderer.js +++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js @@ -161,8 +161,8 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame = var minX = origin[0] + tileRange.minX * tileSize[0] * tileResolution; var minY = origin[1] + tileRange.minY * tileSize[1] * tileResolution; framebufferExtent = [ - minX, minX + framebufferExtentDimension, - minY, minY + framebufferExtentDimension + [minX, minY], + [minX + framebufferExtentDimension, minY + framebufferExtentDimension] ]; this.bindFramebuffer(frameState, framebufferDimension); @@ -246,11 +246,13 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame = for (tileKey in tilesToDraw) { tile = tilesToDraw[tileKey]; tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent); - sx = 2 * (tileExtent[1] - tileExtent[0]) / framebufferExtentDimension; - sy = 2 * (tileExtent[3] - tileExtent[2]) / framebufferExtentDimension; - tx = 2 * (tileExtent[0] - framebufferExtent[0]) / + sx = 2 * (tileExtent[1][0] - tileExtent[0][0]) / + framebufferExtentDimension; + sy = 2 * (tileExtent[1][1] - tileExtent[0][1]) / + framebufferExtentDimension; + tx = 2 * (tileExtent[0][0] - framebufferExtent[0][0]) / framebufferExtentDimension - 1; - ty = 2 * (tileExtent[2] - framebufferExtent[2]) / + ty = 2 * (tileExtent[0][1] - framebufferExtent[0][1]) / framebufferExtentDimension - 1; goog.vec.Vec4.setFromValues(u_tileOffset, sx, sy, tx, ty); gl.uniform4fv(this.locations_.u_tileOffset, u_tileOffset); @@ -294,17 +296,17 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame = var texCoordMatrix = this.texCoordMatrix; goog.vec.Mat4.makeIdentity(texCoordMatrix); goog.vec.Mat4.translate(texCoordMatrix, - (center[0] - framebufferExtent[0]) / - (framebufferExtent[1] - framebufferExtent[0]), - (center[1] - framebufferExtent[2]) / - (framebufferExtent[3] - framebufferExtent[2]), + (center[0] - framebufferExtent[0][0]) / + (framebufferExtent[1][0] - framebufferExtent[0][0]), + (center[1] - framebufferExtent[0][1]) / + (framebufferExtent[1][1] - framebufferExtent[0][1]), 0); goog.vec.Mat4.rotateZ(texCoordMatrix, view2DState.rotation); goog.vec.Mat4.scale(texCoordMatrix, frameState.size[0] * view2DState.resolution / - (framebufferExtent[1] - framebufferExtent[0]), + (framebufferExtent[1][0] - framebufferExtent[0][0]), frameState.size[1] * view2DState.resolution / - (framebufferExtent[3] - framebufferExtent[2]), + (framebufferExtent[1][1] - framebufferExtent[0][1]), 1); goog.vec.Mat4.translate(texCoordMatrix, -0.5, diff --git a/test/spec/ol/renderer/webgl/webglimagelayerrenderer.test.js b/test/spec/ol/renderer/webgl/webglimagelayerrenderer.test.js index c5f7ef1ba9..f34041566a 100644 --- a/test/spec/ol/renderer/webgl/webglimagelayerrenderer.test.js +++ b/test/spec/ol/renderer/webgl/webglimagelayerrenderer.test.js @@ -17,7 +17,7 @@ describe('ol.renderer.webgl.ImageLayer', function() { }); var layer = new ol.layer.Image({ source: new ol.source.Image({ - extent: [0, 1, 0, 1] + extent: [[0, 0], [1, 1]] }) }); renderer = new ol.renderer.webgl.ImageLayer(map.getRenderer(), layer); @@ -32,7 +32,7 @@ describe('ol.renderer.webgl.ImageLayer', function() { // image size is 1024, 768 // image resolution is 10 - imageExtent = [0, 10240, 0, 7680]; + imageExtent = [[0, 0], [10240, 7680]]; }); afterEach(function() {