diff --git a/src/ol/webgl/Helper.js b/src/ol/webgl/Helper.js index 1b03a5fa0d..d9c2c8d638 100644 --- a/src/ol/webgl/Helper.js +++ b/src/ol/webgl/Helper.js @@ -10,11 +10,11 @@ import {clear} from '../obj.js'; import {ARRAY_BUFFER, ELEMENT_ARRAY_BUFFER, TEXTURE_2D, TEXTURE_WRAP_S, TEXTURE_WRAP_T} from '../webgl.js'; import ContextEventType from '../webgl/ContextEventType.js'; import { + compose as composeTransform, create as createTransform, reset as resetTransform, rotate as rotateTransform, - scale as scaleTransform, - translate as translateTransform + scale as scaleTransform } from '../transform.js'; import {create, fromTransform} from '../vec/mat4.js'; import WebGLPostProcessingPass from './PostProcessingPass.js'; @@ -691,10 +691,12 @@ class WebGLHelper extends Disposable { const center = frameState.viewState.center; resetTransform(transform); - scaleTransform(transform, 2 / (resolution * size[0]), 2 / (resolution * size[1])); - rotateTransform(transform, -rotation); - translateTransform(transform, -center[0], -center[1]); - + composeTransform(transform, + 0, 0, + 2 / (resolution * size[0]), 2 / (resolution * size[1]), + -rotation, + -center[0], -center[1] + ); return transform; } diff --git a/test/spec/ol/webgl/helper.test.js b/test/spec/ol/webgl/helper.test.js index 39fb1a2d68..c474941c60 100644 --- a/test/spec/ol/webgl/helper.test.js +++ b/test/spec/ol/webgl/helper.test.js @@ -213,7 +213,10 @@ describe('ol.webgl.WebGLHelper', function() { scaleTransform(expected, scaleX, scaleY); rotateTransform(expected, -frameState.viewState.rotation); translateTransform(expected, -frameState.viewState.center[0], -frameState.viewState.center[1]); - expect(h.makeProjectionTransform(frameState, given)).to.eql(expected); + + h.makeProjectionTransform(frameState, given); + + expect(given.map(val => val.toFixed(15))).to.eql(expected.map(val => val.toFixed(15))); }); });