Port ol.renderer.webgl to new extents
This commit is contained in:
@@ -169,11 +169,13 @@ 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.minX - viewCenter[0],
|
imageExtent[0] - viewCenter[0],
|
||||||
imageExtent.minY - viewCenter[1],
|
imageExtent[2] - viewCenter[1],
|
||||||
0);
|
0);
|
||||||
goog.vec.Mat4.scale(projectionMatrix,
|
goog.vec.Mat4.scale(projectionMatrix,
|
||||||
imageExtent.getWidth() / 2, imageExtent.getHeight() / 2, 1);
|
(imageExtent[1] - imageExtent[0]) / 2,
|
||||||
|
(imageExtent[3] - imageExtent[2]) / 2,
|
||||||
|
1);
|
||||||
goog.vec.Mat4.translate(projectionMatrix, 1, 1, 0);
|
goog.vec.Mat4.translate(projectionMatrix, 1, 1, 0);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,11 +8,11 @@ goog.require('goog.object');
|
|||||||
goog.require('goog.vec.Mat4');
|
goog.require('goog.vec.Mat4');
|
||||||
goog.require('goog.vec.Vec4');
|
goog.require('goog.vec.Vec4');
|
||||||
goog.require('goog.webgl');
|
goog.require('goog.webgl');
|
||||||
goog.require('ol.Extent');
|
|
||||||
goog.require('ol.Size');
|
goog.require('ol.Size');
|
||||||
goog.require('ol.Tile');
|
goog.require('ol.Tile');
|
||||||
goog.require('ol.TileRange');
|
goog.require('ol.TileRange');
|
||||||
goog.require('ol.TileState');
|
goog.require('ol.TileState');
|
||||||
|
goog.require('ol.extent');
|
||||||
goog.require('ol.layer.TileLayer');
|
goog.require('ol.layer.TileLayer');
|
||||||
goog.require('ol.math');
|
goog.require('ol.math');
|
||||||
goog.require('ol.renderer.webgl.Layer');
|
goog.require('ol.renderer.webgl.Layer');
|
||||||
@@ -129,7 +129,7 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
var extent;
|
var extent;
|
||||||
if (tileResolution == view2DState.resolution) {
|
if (tileResolution == view2DState.resolution) {
|
||||||
center = this.snapCenterToPixel(center, tileResolution, frameState.size);
|
center = this.snapCenterToPixel(center, tileResolution, frameState.size);
|
||||||
extent = ol.Extent.getForView2DAndSize(
|
extent = ol.extent.getForView2DAndSize(
|
||||||
center, tileResolution, view2DState.rotation, frameState.size);
|
center, tileResolution, view2DState.rotation, frameState.size);
|
||||||
} else {
|
} else {
|
||||||
extent = frameState.extent;
|
extent = frameState.extent;
|
||||||
@@ -156,11 +156,10 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
var origin = tileGrid.getOrigin(z);
|
var origin = tileGrid.getOrigin(z);
|
||||||
var minX = origin[0] + tileRange.minX * tileSize.width * tileResolution;
|
var minX = origin[0] + tileRange.minX * tileSize.width * tileResolution;
|
||||||
var minY = origin[1] + tileRange.minY * tileSize.height * tileResolution;
|
var minY = origin[1] + tileRange.minY * tileSize.height * tileResolution;
|
||||||
framebufferExtent = new ol.Extent(
|
framebufferExtent = [
|
||||||
minX,
|
minX, minX + framebufferExtentSize.width,
|
||||||
minY,
|
minY, minY + framebufferExtentSize.height
|
||||||
minX + framebufferExtentSize.width,
|
];
|
||||||
minY + framebufferExtentSize.height);
|
|
||||||
|
|
||||||
this.bindFramebuffer(frameState, framebufferDimension);
|
this.bindFramebuffer(frameState, framebufferDimension);
|
||||||
gl.viewport(0, 0, framebufferDimension, framebufferDimension);
|
gl.viewport(0, 0, framebufferDimension, framebufferDimension);
|
||||||
@@ -200,7 +199,7 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
tilesToDrawByZ, getTileIfLoaded);
|
tilesToDrawByZ, getTileIfLoaded);
|
||||||
|
|
||||||
var allTilesLoaded = true;
|
var allTilesLoaded = true;
|
||||||
var tmpExtent = new ol.Extent(0, 0, 0, 0);
|
var tmpExtent = ol.extent.createEmptyExtent();
|
||||||
var tmpTileRange = new ol.TileRange(0, 0, 0, 0);
|
var tmpTileRange = new ol.TileRange(0, 0, 0, 0);
|
||||||
var childTileRange, fullyLoaded, tile, tileState, x, y;
|
var childTileRange, fullyLoaded, tile, tileState, x, y;
|
||||||
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
|
for (x = tileRange.minX; x <= tileRange.maxX; ++x) {
|
||||||
@@ -240,11 +239,13 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
|
|||||||
goog.array.forEach(zs, function(z) {
|
goog.array.forEach(zs, function(z) {
|
||||||
goog.object.forEach(tilesToDrawByZ[z], function(tile) {
|
goog.object.forEach(tilesToDrawByZ[z], function(tile) {
|
||||||
var tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent);
|
var tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent);
|
||||||
var sx = 2 * tileExtent.getWidth() / framebufferExtentSize.width;
|
var sx =
|
||||||
var sy = 2 * tileExtent.getHeight() / framebufferExtentSize.height;
|
2 * (tileExtent[1] - tileExtent[0]) / framebufferExtentSize.width;
|
||||||
var tx = 2 * (tileExtent.minX - framebufferExtent.minX) /
|
var sy =
|
||||||
|
2 * (tileExtent[3] - tileExtent[2]) / framebufferExtentSize.height;
|
||||||
|
var tx = 2 * (tileExtent[0] - framebufferExtent[0]) /
|
||||||
framebufferExtentSize.width - 1;
|
framebufferExtentSize.width - 1;
|
||||||
var ty = 2 * (tileExtent.minY - framebufferExtent.minY) /
|
var ty = 2 * (tileExtent[2] - framebufferExtent[2]) /
|
||||||
framebufferExtentSize.height - 1;
|
framebufferExtentSize.height - 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);
|
||||||
@@ -286,17 +287,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.minX) /
|
(center[0] - framebufferExtent[0]) /
|
||||||
(framebufferExtent.maxX - framebufferExtent.minX),
|
(framebufferExtent[1] - framebufferExtent[0]),
|
||||||
(center[1] - framebufferExtent.minY) /
|
(center[1] - framebufferExtent[2]) /
|
||||||
(framebufferExtent.maxY - framebufferExtent.minY),
|
(framebufferExtent[3] - framebufferExtent[2]),
|
||||||
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.width * view2DState.resolution /
|
frameState.size.width * view2DState.resolution /
|
||||||
(framebufferExtent.maxX - framebufferExtent.minX),
|
(framebufferExtent[1] - framebufferExtent[0]),
|
||||||
frameState.size.height * view2DState.resolution /
|
frameState.size.height * view2DState.resolution /
|
||||||
(framebufferExtent.maxY - framebufferExtent.minY),
|
(framebufferExtent[3] - framebufferExtent[2]),
|
||||||
1);
|
1);
|
||||||
goog.vec.Mat4.translate(texCoordMatrix,
|
goog.vec.Mat4.translate(texCoordMatrix,
|
||||||
-0.5,
|
-0.5,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ describe('ol.renderer.webgl.ImageLayer', function() {
|
|||||||
});
|
});
|
||||||
var layer = new ol.layer.ImageLayer({
|
var layer = new ol.layer.ImageLayer({
|
||||||
source: new ol.source.ImageSource({
|
source: new ol.source.ImageSource({
|
||||||
extent: new ol.Extent(0, 0, 1, 1)
|
extent: [0, 1, 0, 1]
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
renderer = new ol.renderer.webgl.ImageLayer(map.getRenderer(), layer);
|
renderer = new ol.renderer.webgl.ImageLayer(map.getRenderer(), layer);
|
||||||
@@ -33,7 +33,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 = new ol.Extent(0, 0, 10240, 7680);
|
imageExtent = [0, 10240, 0, 7680];
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(function() {
|
afterEach(function() {
|
||||||
@@ -79,7 +79,6 @@ describe('ol.renderer.webgl.ImageLayer', function() {
|
|||||||
|
|
||||||
goog.require('goog.vec.Mat4');
|
goog.require('goog.vec.Mat4');
|
||||||
goog.require('goog.vec.Vec4');
|
goog.require('goog.vec.Vec4');
|
||||||
goog.require('ol.Extent');
|
|
||||||
goog.require('ol.Map');
|
goog.require('ol.Map');
|
||||||
goog.require('ol.layer.ImageLayer');
|
goog.require('ol.layer.ImageLayer');
|
||||||
goog.require('ol.source.ImageSource');
|
goog.require('ol.source.ImageSource');
|
||||||
|
|||||||
Reference in New Issue
Block a user