diff options
author | Lauren Budorick <lauren@mapbox.com> | 2014-07-25 18:17:37 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2014-09-03 18:12:40 -0700 |
commit | 71c31cee2499d44fcd590136d15c5da7fbfb65ec (patch) | |
tree | bdbaf4289a156af7be552a3758e257ef25e2caf4 /include/mbgl | |
parent | c1280f0b380bfb21ce9e811b87bcf7d8ab380f25 (diff) | |
download | qtlocation-mapboxgl-71c31cee2499d44fcd590136d15c5da7fbfb65ec.tar.gz |
linepattern in progress
Diffstat (limited to 'include/mbgl')
-rw-r--r-- | include/mbgl/renderer/line_bucket.hpp | 4 | ||||
-rw-r--r-- | include/mbgl/renderer/painter.hpp | 2 | ||||
-rw-r--r-- | include/mbgl/shader/linepattern_shader.hpp | 59 |
3 files changed, 64 insertions, 1 deletions
diff --git a/include/mbgl/renderer/line_bucket.hpp b/include/mbgl/renderer/line_bucket.hpp index c7e375a0a1..8babb734ed 100644 --- a/include/mbgl/renderer/line_bucket.hpp +++ b/include/mbgl/renderer/line_bucket.hpp @@ -17,10 +17,11 @@ class LineVertexBuffer; class TriangleElementsBuffer; class LineShader; class LinejoinShader; +class LinepatternShader; struct pbf; class LineBucket : public Bucket { - typedef ElementGroup<1> triangle_group_type; + typedef ElementGroup<2> triangle_group_type; typedef ElementGroup<1> point_group_type; public: @@ -38,6 +39,7 @@ public: bool hasPoints() const; void drawLines(LineShader& shader); + void drawLinePatterns(LinepatternShader& shader); void drawPoints(LinejoinShader& shader); public: diff --git a/include/mbgl/renderer/painter.hpp b/include/mbgl/renderer/painter.hpp index a8fe62b550..534323dd5d 100644 --- a/include/mbgl/renderer/painter.hpp +++ b/include/mbgl/renderer/painter.hpp @@ -14,6 +14,7 @@ #include <mbgl/shader/pattern_shader.hpp> #include <mbgl/shader/line_shader.hpp> #include <mbgl/shader/linejoin_shader.hpp> +#include <mbgl/shader/linepattern_shader.hpp> #include <mbgl/shader/icon_shader.hpp> #include <mbgl/shader/raster_shader.hpp> #include <mbgl/shader/text_shader.hpp> @@ -169,6 +170,7 @@ public: std::unique_ptr<OutlineShader> outlineShader; std::unique_ptr<LineShader> lineShader; std::unique_ptr<LinejoinShader> linejoinShader; + std::unique_ptr<LinepatternShader> linepatternShader; std::unique_ptr<PatternShader> patternShader; std::unique_ptr<IconShader> iconShader; std::unique_ptr<RasterShader> rasterShader; diff --git a/include/mbgl/shader/linepattern_shader.hpp b/include/mbgl/shader/linepattern_shader.hpp new file mode 100644 index 0000000000..7d98b295a8 --- /dev/null +++ b/include/mbgl/shader/linepattern_shader.hpp @@ -0,0 +1,59 @@ +#ifndef MBGL_SHADER_SHADER_LINEPATTERN +#define MBGL_SHADER_SHADER_LINEPATTERN + +#include <mbgl/shader/shader.hpp> + +namespace mbgl { + +class LinepatternShader : public Shader { +public: + LinepatternShader(); + + void bind(char *offset); + + void setExtrudeMatrix(const std::array<float, 16>& exmatrix); + void setLineWidth(const std::array<float, 2>& linewidth); + void setRatio(float ratio); + void setDebug(float debug); + void setPatternSize(const std::array<float, 2>& new_pattern_size); + void setPatternTopLeft(const std::array<float, 2>& new_pattern_tl); + void setPatternBottomRight(const std::array<float, 2>& new_pattern_br); + void setOffset(const std::array<float, 2>& offset); + void setGamma(float new_gamma); + void setFade(float new_fade); + +private: + int32_t a_pos = -1; + int32_t a_extrude = -1; + int32_t a_linesofar = -1; + + std::array<float, 16> exmatrix = {{}}; + int32_t u_exmatrix = -1; + + std::array<float, 2> linewidth = {{}}; + int32_t u_linewidth = -1; + + float ratio = 0; + int32_t u_ratio = -1; + + std::array<float, 2> pattern_size = {{}}; + int32_t u_pattern_size = -1; + + std::array<float, 2> pattern_tl = {{}}; + int32_t u_pattern_tl = -1; + + std::array<float, 2> pattern_br = {{}}; + int32_t u_pattern_br = -1; + + std::array<float, 2> offset = {{}}; + int32_t u_offset = -1; + + float gamma = 0.0f; + int32_t u_gamma = -1; + + float fade = 0; + int32_t u_fade = -1; +}; +} + +#endif |