diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2019-04-01 13:48:20 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2019-04-05 11:49:17 +0200 |
commit | 865f8a6c03540e329ed6caef354799fb58b7ab6e (patch) | |
tree | 8c748a0ef16dc88ed0ceeadea71f20bfd99cdf96 /src/mbgl/renderer/layers/render_heatmap_layer.cpp | |
parent | ebd850803278a6ffbca0bc8a5b96d415b239aeb8 (diff) | |
download | qtlocation-mapboxgl-865f8a6c03540e329ed6caef354799fb58b7ab6e.tar.gz |
[core] add gfx::Renderable and gfx::OffscreenTexture
Diffstat (limited to 'src/mbgl/renderer/layers/render_heatmap_layer.cpp')
-rw-r--r-- | src/mbgl/renderer/layers/render_heatmap_layer.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp index c720709e28..15345ffe9e 100644 --- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp +++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp @@ -11,6 +11,7 @@ #include <mbgl/geometry/feature_index.hpp> #include <mbgl/gfx/cull_face_mode.hpp> #include <mbgl/gl/context.hpp> +#include <mbgl/gl/renderable_resource.hpp> #include <mbgl/util/math.hpp> #include <mbgl/util/intersection_tests.hpp> @@ -57,27 +58,27 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) { const auto size = Size{viewportSize.width / 4, viewportSize.height / 4}; if (!renderTexture || renderTexture->getSize() != size) { + renderTexture.reset(); if (parameters.context.supportsHalfFloatTextures) { - renderTexture = OffscreenTexture(parameters.context, size, gfx::TextureChannelDataType::HalfFloat); + renderTexture = parameters.context.createOffscreenTexture(size, gfx::TextureChannelDataType::HalfFloat); + // TODO: try binding in the offscreen texture constructor try { - renderTexture->bind(); + renderTexture->getResource<gl::RenderableResource>().bind(); } catch (const std::runtime_error& ex) { // can't render to a half-float texture; falling back to unsigned byte one - renderTexture = nullopt; + renderTexture.reset(); parameters.context.supportsHalfFloatTextures = false; } } - if (!parameters.context.supportsHalfFloatTextures || !renderTexture) { - renderTexture = OffscreenTexture(parameters.context, size, gfx::TextureChannelDataType::UnsignedByte); - renderTexture->bind(); + if (!renderTexture) { + renderTexture = parameters.context.createOffscreenTexture(size, gfx::TextureChannelDataType::UnsignedByte); } - - } else { - renderTexture->bind(); } + renderTexture->getResource<gl::RenderableResource>().bind(); + if (!colorRampTexture) { colorRampTexture = parameters.context.createTexture(colorRamp, gfx::TextureChannelDataType::UnsignedByte); } |