Clean up calculation of framebuffer extent and size
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
// FIXME large resolutions lead to too large framebuffers :-(
|
// FIXME large resolutions lead to too large framebuffers :-(
|
||||||
// FIXME animated shaders! check in redraw
|
// FIXME animated shaders! check in redraw
|
||||||
// FIXME defer texture uploads and delete* calls
|
// FIXME defer texture uploads and delete* calls
|
||||||
// FIXME this now breaks for intermediate resolutions :-(
|
// FIXME strange things happen at very large zooms
|
||||||
|
|
||||||
goog.provide('ol.webgl.TileLayerRenderer');
|
goog.provide('ol.webgl.TileLayerRenderer');
|
||||||
goog.provide('ol.webgl.tilelayerrenderer.shader.Fragment');
|
goog.provide('ol.webgl.tilelayerrenderer.shader.Fragment');
|
||||||
@@ -272,17 +272,18 @@ ol.webgl.TileLayerRenderer.prototype.render = function() {
|
|||||||
tileBoundsSize.height * tileSize.height);
|
tileBoundsSize.height * tileSize.height);
|
||||||
var framebufferDimension =
|
var framebufferDimension =
|
||||||
Math.pow(2, Math.ceil(Math.log(maxDimension) / Math.log(2)));
|
Math.pow(2, Math.ceil(Math.log(maxDimension) / Math.log(2)));
|
||||||
var nTilesX = framebufferDimension / tileSize.width;
|
var framebufferExtentSize = new ol.Size(
|
||||||
var nTilesY = framebufferDimension / tileSize.height;
|
mapResolution * framebufferDimension,
|
||||||
var framebufferTileBounds = new ol.TileBounds(
|
mapResolution * framebufferDimension);
|
||||||
tileBounds.minX,
|
var origin = tileGrid.getOrigin(z);
|
||||||
tileBounds.minY,
|
var tileResolution = tileGrid.getResolution(z);
|
||||||
tileBounds.minX + nTilesX - 1,
|
var minX = origin.x + tileBounds.minX * tileSize.width * tileResolution;
|
||||||
tileBounds.minY + nTilesY - 1);
|
var minY = origin.y + tileBounds.minY * tileSize.height * tileResolution;
|
||||||
goog.asserts.assert(framebufferTileBounds.containsTileBounds(tileBounds));
|
var framebufferExtent = new ol.Extent(
|
||||||
var framebufferExtent =
|
minX,
|
||||||
tileGrid.getTileBoundsExtent(z, framebufferTileBounds);
|
minY,
|
||||||
var framebufferExtentSize = framebufferExtent.getSize();
|
minX + framebufferExtentSize.width,
|
||||||
|
minY + framebufferExtentSize.height);
|
||||||
|
|
||||||
this.bindFramebuffer_(framebufferDimension);
|
this.bindFramebuffer_(framebufferDimension);
|
||||||
gl.viewport(0, 0, framebufferDimension, framebufferDimension);
|
gl.viewport(0, 0, framebufferDimension, framebufferDimension);
|
||||||
|
|||||||
Reference in New Issue
Block a user