WebGL renderer updates for new extent structure
This commit is contained in:
@@ -169,12 +169,12 @@ ol.renderer.webgl.ImageLayer.prototype.updateProjectionMatrix_ =
|
|||||||
2 / canvasExtentWidth, 2 / canvasExtentHeight, 1);
|
2 / canvasExtentWidth, 2 / canvasExtentHeight, 1);
|
||||||
goog.vec.Mat4.rotateZ(projectionMatrix, -viewRotation);
|
goog.vec.Mat4.rotateZ(projectionMatrix, -viewRotation);
|
||||||
goog.vec.Mat4.translate(projectionMatrix,
|
goog.vec.Mat4.translate(projectionMatrix,
|
||||||
imageExtent[0] - viewCenter[0],
|
imageExtent[0][0] - viewCenter[0],
|
||||||
imageExtent[2] - viewCenter[1],
|
imageExtent[0][1] - viewCenter[1],
|
||||||
0);
|
0);
|
||||||
goog.vec.Mat4.scale(projectionMatrix,
|
goog.vec.Mat4.scale(projectionMatrix,
|
||||||
(imageExtent[1] - imageExtent[0]) / 2,
|
(imageExtent[1][0] - imageExtent[0][0]) / 2,
|
||||||
(imageExtent[3] - imageExtent[2]) / 2,
|
(imageExtent[1][1] - imageExtent[0][1]) / 2,
|
||||||
1);
|
1);
|
||||||
goog.vec.Mat4.translate(projectionMatrix, 1, 1, 0);
|
goog.vec.Mat4.translate(projectionMatrix, 1, 1, 0);
|
||||||
|
|
||||||
|
|||||||
@@ -161,8 +161,8 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
var minX = origin[0] + tileRange.minX * tileSize[0] * tileResolution;
|
var minX = origin[0] + tileRange.minX * tileSize[0] * tileResolution;
|
||||||
var minY = origin[1] + tileRange.minY * tileSize[1] * tileResolution;
|
var minY = origin[1] + tileRange.minY * tileSize[1] * tileResolution;
|
||||||
framebufferExtent = [
|
framebufferExtent = [
|
||||||
minX, minX + framebufferExtentDimension,
|
[minX, minY],
|
||||||
minY, minY + framebufferExtentDimension
|
[minX + framebufferExtentDimension, minY + framebufferExtentDimension]
|
||||||
];
|
];
|
||||||
|
|
||||||
this.bindFramebuffer(frameState, framebufferDimension);
|
this.bindFramebuffer(frameState, framebufferDimension);
|
||||||
@@ -246,11 +246,13 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
for (tileKey in tilesToDraw) {
|
for (tileKey in tilesToDraw) {
|
||||||
tile = tilesToDraw[tileKey];
|
tile = tilesToDraw[tileKey];
|
||||||
tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent);
|
tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent);
|
||||||
sx = 2 * (tileExtent[1] - tileExtent[0]) / framebufferExtentDimension;
|
sx = 2 * (tileExtent[1][0] - tileExtent[0][0]) /
|
||||||
sy = 2 * (tileExtent[3] - tileExtent[2]) / framebufferExtentDimension;
|
framebufferExtentDimension;
|
||||||
tx = 2 * (tileExtent[0] - framebufferExtent[0]) /
|
sy = 2 * (tileExtent[1][1] - tileExtent[0][1]) /
|
||||||
|
framebufferExtentDimension;
|
||||||
|
tx = 2 * (tileExtent[0][0] - framebufferExtent[0][0]) /
|
||||||
framebufferExtentDimension - 1;
|
framebufferExtentDimension - 1;
|
||||||
ty = 2 * (tileExtent[2] - framebufferExtent[2]) /
|
ty = 2 * (tileExtent[0][1] - framebufferExtent[0][1]) /
|
||||||
framebufferExtentDimension - 1;
|
framebufferExtentDimension - 1;
|
||||||
goog.vec.Vec4.setFromValues(u_tileOffset, sx, sy, tx, ty);
|
goog.vec.Vec4.setFromValues(u_tileOffset, sx, sy, tx, ty);
|
||||||
gl.uniform4fv(this.locations_.u_tileOffset, u_tileOffset);
|
gl.uniform4fv(this.locations_.u_tileOffset, u_tileOffset);
|
||||||
@@ -294,17 +296,17 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
var texCoordMatrix = this.texCoordMatrix;
|
var texCoordMatrix = this.texCoordMatrix;
|
||||||
goog.vec.Mat4.makeIdentity(texCoordMatrix);
|
goog.vec.Mat4.makeIdentity(texCoordMatrix);
|
||||||
goog.vec.Mat4.translate(texCoordMatrix,
|
goog.vec.Mat4.translate(texCoordMatrix,
|
||||||
(center[0] - framebufferExtent[0]) /
|
(center[0] - framebufferExtent[0][0]) /
|
||||||
(framebufferExtent[1] - framebufferExtent[0]),
|
(framebufferExtent[1][0] - framebufferExtent[0][0]),
|
||||||
(center[1] - framebufferExtent[2]) /
|
(center[1] - framebufferExtent[0][1]) /
|
||||||
(framebufferExtent[3] - framebufferExtent[2]),
|
(framebufferExtent[1][1] - framebufferExtent[0][1]),
|
||||||
0);
|
0);
|
||||||
goog.vec.Mat4.rotateZ(texCoordMatrix, view2DState.rotation);
|
goog.vec.Mat4.rotateZ(texCoordMatrix, view2DState.rotation);
|
||||||
goog.vec.Mat4.scale(texCoordMatrix,
|
goog.vec.Mat4.scale(texCoordMatrix,
|
||||||
frameState.size[0] * view2DState.resolution /
|
frameState.size[0] * view2DState.resolution /
|
||||||
(framebufferExtent[1] - framebufferExtent[0]),
|
(framebufferExtent[1][0] - framebufferExtent[0][0]),
|
||||||
frameState.size[1] * view2DState.resolution /
|
frameState.size[1] * view2DState.resolution /
|
||||||
(framebufferExtent[3] - framebufferExtent[2]),
|
(framebufferExtent[1][1] - framebufferExtent[0][1]),
|
||||||
1);
|
1);
|
||||||
goog.vec.Mat4.translate(texCoordMatrix,
|
goog.vec.Mat4.translate(texCoordMatrix,
|
||||||
-0.5,
|
-0.5,
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ describe('ol.renderer.webgl.ImageLayer', function() {
|
|||||||
});
|
});
|
||||||
var layer = new ol.layer.Image({
|
var layer = new ol.layer.Image({
|
||||||
source: new ol.source.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);
|
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 size is 1024, 768
|
||||||
// image resolution is 10
|
// image resolution is 10
|
||||||
imageExtent = [0, 10240, 0, 7680];
|
imageExtent = [[0, 0], [10240, 7680]];
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(function() {
|
afterEach(function() {
|
||||||
|
|||||||
Reference in New Issue
Block a user