summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-05-15 17:30:22 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-05-16 17:08:36 +0300
commit64deb7aae9ae3f17a91679ee4ae7df50d7e116e6 (patch)
treea30b7eebf90c930dd6adb91e285f18aa37599335
parentea53f6f0a56c2ebb0c663107f92d977ebf06c570 (diff)
downloadqtlocation-mapboxgl-64deb7aae9ae3f17a91679ee4ae7df50d7e116e6.tar.gz
[core] Avoid unneeded proj matrix calculations in renderer
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index f987bb8666..85f97f78aa 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -312,12 +312,13 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
bool symbolBucketsChanged = false;
const bool placementChanged = !placement->stillRecent(updateParameters.timePoint);
std::set<std::string> usedSymbolLayers;
-
+ mat4 projMatrix;
if (placementChanged) {
placement = std::make_unique<Placement>(
updateParameters.transformState, updateParameters.mode,
updateParameters.transitionOptions, updateParameters.crossSourceCollisions,
std::move(placement));
+ updateParameters.transformState.getProjMatrix(projMatrix);
}
for (auto it = symbolLayers.rbegin(); it != symbolLayers.rend(); ++it) {
@@ -326,8 +327,6 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
if (placementChanged) {
usedSymbolLayers.insert(symbolLayer.getID());
- mat4 projMatrix;
- updateParameters.transformState.getProjMatrix(projMatrix);
placement->placeLayer(*symbolLayer.getSymbolInterface(), projMatrix, updateParameters.debugOptions & MapDebugOptions::Collision);
}
}