summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsheem Mamoowala <asheem.mamoowala@mapbox.com>2018-04-04 15:08:16 -0700
committerAsheem Mamoowala <asheem.mamoowala@mapbox.com>2018-04-05 18:04:25 -0700
commitdc495e1c9d831ccf928381845ffcb409c5d91271 (patch)
treefb32b19f15a9ab4421bf11ef275eacc5847fe721
parent275d753e91501345e00c23166f0c67ccf8741155 (diff)
downloadqtlocation-mapboxgl-dc495e1c9d831ccf928381845ffcb409c5d91271.tar.gz
[core] Add Projection matrix to CustomLayerRenderParameters to transform web mercator world coordinates to GL coordinates.
-rw-r--r--include/mbgl/style/layers/custom_layer.hpp3
-rw-r--r--src/mbgl/renderer/layers/render_custom_layer.cpp4
2 files changed, 7 insertions, 0 deletions
diff --git a/include/mbgl/style/layers/custom_layer.hpp b/include/mbgl/style/layers/custom_layer.hpp
index 9911df9a1e..fbe3a4a6c2 100644
--- a/include/mbgl/style/layers/custom_layer.hpp
+++ b/include/mbgl/style/layers/custom_layer.hpp
@@ -2,6 +2,8 @@
#include <mbgl/style/layer.hpp>
+#include <array>
+
namespace mbgl {
namespace style {
@@ -17,6 +19,7 @@ struct CustomLayerRenderParameters {
double bearing;
double pitch;
double fieldOfView;
+ std::array<double, 16> projectionMatrix;
};
class CustomLayerHost {
diff --git a/src/mbgl/renderer/layers/render_custom_layer.cpp b/src/mbgl/renderer/layers/render_custom_layer.cpp
index 85ca5b074e..be9f64d9eb 100644
--- a/src/mbgl/renderer/layers/render_custom_layer.cpp
+++ b/src/mbgl/renderer/layers/render_custom_layer.cpp
@@ -6,6 +6,7 @@
#include <mbgl/style/layers/custom_layer_impl.hpp>
#include <mbgl/map/transform_state.hpp>
#include <mbgl/gl/gl.hpp>
+#include <mbgl/util/mat4.hpp>
namespace mbgl {
@@ -72,6 +73,9 @@ void RenderCustomLayer::render(PaintParameters& paintParameters, RenderSource*)
parameters.bearing = -state.getAngle() * util::RAD2DEG;
parameters.pitch = state.getPitch();
parameters.fieldOfView = state.getFieldOfView();
+ mat4 projMatrix;
+ state.getProjMatrix(projMatrix);
+ parameters.projectionMatrix = projMatrix;
MBGL_CHECK_ERROR(host->render(parameters));