diff --git a/src/render/painter.js b/src/render/painter.js index 62052ff6ceb..013a7a3e9fd 100644 --- a/src/render/painter.js +++ b/src/render/painter.js @@ -113,6 +113,15 @@ class Painter { rasterBoundsArray.emplaceBack(EXTENT, EXTENT, 32767, 32767); this.rasterBoundsBuffer = Buffer.fromStructArray(rasterBoundsArray, Buffer.BufferType.VERTEX); this.rasterBoundsVAO = new VertexArrayObject(); + + this.extTextureFilterAnisotropic = ( + gl.getExtension('EXT_texture_filter_anisotropic') || + gl.getExtension('MOZ_EXT_texture_filter_anisotropic') || + gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') + ); + if (this.extTextureFilterAnisotropic) { + this.extTextureFilterAnisotropicMax = gl.getParameter(this.extTextureFilterAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT); + } } /* diff --git a/src/source/raster_tile_source.js b/src/source/raster_tile_source.js index 6b7c738cdb8..f8b82079c77 100644 --- a/src/source/raster_tile_source.js +++ b/src/source/raster_tile_source.js @@ -90,6 +90,11 @@ class RasterTileSource extends Evented { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + + if (this.map.painter.extTextureFilterAnisotropic) { + gl.texParameterf(gl.TEXTURE_2D, this.map.painter.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT, this.map.painter.extTextureFilterAnisotropicMax); + } + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img); tile.texture.size = img.width; }