diff options
Diffstat (limited to 'src/mbgl/map/transform_state.cpp')
-rw-r--r-- | src/mbgl/map/transform_state.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mbgl/map/transform_state.cpp b/src/mbgl/map/transform_state.cpp index b5513f3d83..1894c59e2b 100644 --- a/src/mbgl/map/transform_state.cpp +++ b/src/mbgl/map/transform_state.cpp @@ -171,9 +171,12 @@ void TransformState::updateMatricesIfNeeded() const { getProjMatrix(projectionMatrix); coordMatrix = coordinatePointMatrix(projectionMatrix); - bool err = matrix::invert(invertedMatrix, coordMatrix); + bool err = matrix::invert(invProjectionMatrix, projectionMatrix); + if (err) throw std::runtime_error("failed to invert projectionMatrix"); + err = matrix::invert(invertedMatrix, coordMatrix); if (err) throw std::runtime_error("failed to invert coordinatePointMatrix"); + requestMatricesUpdate = false; } @@ -182,6 +185,11 @@ const mat4& TransformState::getProjectionMatrix() const { return projectionMatrix; } +const mat4& TransformState::getInvProjectionMatrix() const { + updateMatricesIfNeeded(); + return invProjectionMatrix; +} + const mat4& TransformState::getCoordMatrix() const { updateMatricesIfNeeded(); return coordMatrix; |