summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/painter.hpp
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2016-06-21 17:22:51 -0700
committerBruno de Oliveira Abinader <bruno@mapbox.com>2016-07-01 19:47:35 +0300
commita17b0bcd82ebe8628b69588d19773d26596b86da (patch)
tree06e53bf42b059b28780e995020733aaaeb6487b1 /src/mbgl/renderer/painter.hpp
parenteb7cfea7eacad8a179fb3167b88508f8f1f7fdd2 (diff)
downloadqtlocation-mapboxgl-a17b0bcd82ebe8628b69588d19773d26596b86da.tar.gz
[core] Fix overdraw mode on Linux
- Use glBindAttribLocation for GLSL attributes. - Create a separate shader for each shader that supports overdraw. Needed because each uniform location must be known for every program. - Create a separate VAO for each shader inside buckets. Needed because we can only bind a VAO to a specific shader. Fixes #5435.
Diffstat (limited to 'src/mbgl/renderer/painter.hpp')
-rw-r--r--src/mbgl/renderer/painter.hpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/mbgl/renderer/painter.hpp b/src/mbgl/renderer/painter.hpp
index 1f511467d0..197466e94c 100644
--- a/src/mbgl/renderer/painter.hpp
+++ b/src/mbgl/renderer/painter.hpp
@@ -53,8 +53,6 @@ class CircleShader;
class PatternShader;
class IconShader;
class RasterShader;
-class SDFGlyphShader;
-class SDFIconShader;
class CollisionBoxShader;
struct ClipID;
@@ -137,7 +135,7 @@ private:
float scaleDivisor,
std::array<float, 2> texsize,
SDFShader& sdfShader,
- void (SymbolBucket::*drawSDF)(SDFShader&, gl::ObjectStore&),
+ void (SymbolBucket::*drawSDF)(SDFShader&, gl::ObjectStore&, bool),
// Layout
style::AlignmentType rotationAlignment,
@@ -208,11 +206,24 @@ private:
std::unique_ptr<PatternShader> patternShader;
std::unique_ptr<IconShader> iconShader;
std::unique_ptr<RasterShader> rasterShader;
- std::unique_ptr<SDFGlyphShader> sdfGlyphShader;
- std::unique_ptr<SDFIconShader> sdfIconShader;
+ std::unique_ptr<SDFShader> sdfGlyphShader;
+ std::unique_ptr<SDFShader> sdfIconShader;
std::unique_ptr<CollisionBoxShader> collisionBoxShader;
std::unique_ptr<CircleShader> circleShader;
+ std::unique_ptr<PlainShader> plainOverdrawShader;
+ std::unique_ptr<OutlineShader> outlineOverdrawShader;
+ std::unique_ptr<OutlinePatternShader> outlinePatternOverdrawShader;
+ std::unique_ptr<LineShader> lineOverdrawShader;
+ std::unique_ptr<LineSDFShader> linesdfOverdrawShader;
+ std::unique_ptr<LinepatternShader> linepatternOverdrawShader;
+ std::unique_ptr<PatternShader> patternOverdrawShader;
+ std::unique_ptr<IconShader> iconOverdrawShader;
+ std::unique_ptr<RasterShader> rasterOverdrawShader;
+ std::unique_ptr<SDFShader> sdfGlyphOverdrawShader;
+ std::unique_ptr<SDFShader> sdfIconOverdrawShader;
+ std::unique_ptr<CircleShader> circleOverdrawShader;
+
// Set up the stencil quad we're using to generate the stencil mask.
StaticVertexBuffer tileStencilBuffer = {
// top left triangle
@@ -241,6 +252,8 @@ private:
};
VertexArrayObject tileBorderArray;
+
+ VertexArrayObject coveringRasterOverdrawArray;
};
} // namespace mbgl