diff --git a/src/mbgl/geometry/vao.cpp b/src/mbgl/geometry/vao.cpp index ef4cb26db..1330a057f 100644 --- a/src/mbgl/geometry/vao.cpp +++ b/src/mbgl/geometry/vao.cpp @@ -69,7 +69,7 @@ void VertexArrayObject::bindVertexArrayObject() { } void VertexArrayObject::verifyBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, - char *offset) { + GLbyte *offset) { if (bound_shader != shader.getID()) { throw std::runtime_error(std::string("trying to rebind VAO to another shader from " + util::toString(bound_shader) + "(" + bound_shader_name + ") to " + @@ -84,7 +84,7 @@ void VertexArrayObject::verifyBinding(Shader &shader, GLuint vertexBuffer, GLuin } void VertexArrayObject::storeBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, - char *offset) { + GLbyte *offset) { bound_shader = shader.getID(); bound_shader_name = shader.name; bound_offset = offset; diff --git a/src/mbgl/geometry/vao.hpp b/src/mbgl/geometry/vao.hpp index e512a3e48..bd845b1e3 100644 --- a/src/mbgl/geometry/vao.hpp +++ b/src/mbgl/geometry/vao.hpp @@ -18,7 +18,7 @@ public: ~VertexArrayObject(); template - inline void bind(Shader& shader, VertexBuffer &vertexBuffer, char *offset) { + inline void bind(Shader& shader, VertexBuffer &vertexBuffer, GLbyte *offset) { bindVertexArrayObject(); if (bound_shader == 0) { vertexBuffer.bind(); @@ -32,7 +32,7 @@ public: } template - inline void bind(Shader& shader, VertexBuffer &vertexBuffer, ElementsBuffer &elementsBuffer, char *offset) { + inline void bind(Shader& shader, VertexBuffer &vertexBuffer, ElementsBuffer &elementsBuffer, GLbyte *offset) { bindVertexArrayObject(); if (bound_shader == 0) { vertexBuffer.bind(); @@ -52,8 +52,8 @@ public: private: void bindVertexArrayObject(); - void storeBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, char *offset); - void verifyBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, char *offset); + void storeBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, GLbyte *offset); + void verifyBinding(Shader &shader, GLuint vertexBuffer, GLuint elementsBuffer, GLbyte *offset); GLuint vao = 0; @@ -63,7 +63,7 @@ private: const char *bound_shader_name = ""; GLuint bound_vertex_buffer = 0; GLuint bound_elements_buffer = 0; - char *bound_offset = 0; + GLbyte *bound_offset = 0; }; } diff --git a/src/mbgl/renderer/bucket.hpp b/src/mbgl/renderer/bucket.hpp index eb02f32eb..a1dbdeeed 100644 --- a/src/mbgl/renderer/bucket.hpp +++ b/src/mbgl/renderer/bucket.hpp @@ -1,13 +1,15 @@ #ifndef MBGL_RENDERER_BUCKET #define MBGL_RENDERER_BUCKET +#include #include #include #include #include -#define BUFFER_OFFSET(i) ((char*)nullptr + (i)) +#define BUFFER_OFFSET_0 ((GLbyte*)nullptr) +#define BUFFER_OFFSET(i) ((BUFFER_OFFSET_0) + (i)) namespace mbgl { diff --git a/src/mbgl/renderer/circle_bucket.cpp b/src/mbgl/renderer/circle_bucket.cpp index fde04df29..a6a439d86 100644 --- a/src/mbgl/renderer/circle_bucket.cpp +++ b/src/mbgl/renderer/circle_bucket.cpp @@ -74,8 +74,8 @@ void CircleBucket::addGeometry(const GeometryCollection& geometryCollection) { } void CircleBucket::drawCircles(CircleShader& shader) { - char* vertexIndex = BUFFER_OFFSET(vertexStart_ * vertexBuffer_.itemSize); - char* elementsIndex = BUFFER_OFFSET(elementsStart_ * elementsBuffer_.itemSize); + GLbyte *vertexIndex = BUFFER_OFFSET(vertexStart_ * vertexBuffer_.itemSize); + GLbyte *elementsIndex = BUFFER_OFFSET(elementsStart_ * elementsBuffer_.itemSize); for (auto& group : triangleGroups_) { assert(group); diff --git a/src/mbgl/renderer/debug_bucket.cpp b/src/mbgl/renderer/debug_bucket.cpp index 1d9b9fb6d..161412f0d 100644 --- a/src/mbgl/renderer/debug_bucket.cpp +++ b/src/mbgl/renderer/debug_bucket.cpp @@ -23,11 +23,11 @@ void DebugBucket::render(Painter& painter, const StyleLayer&, const TileID&, con } void DebugBucket::drawLines(PlainShader& shader) { - array.bind(shader, fontBuffer, BUFFER_OFFSET(0)); + array.bind(shader, fontBuffer, BUFFER_OFFSET_0); MBGL_CHECK_ERROR(glDrawArrays(GL_LINES, 0, (GLsizei)(fontBuffer.index()))); } void DebugBucket::drawPoints(PlainShader& shader) { - array.bind(shader, fontBuffer, BUFFER_OFFSET(0)); + array.bind(shader, fontBuffer, BUFFER_OFFSET_0); MBGL_CHECK_ERROR(glDrawArrays(GL_POINTS, 0, (GLsizei)(fontBuffer.index()))); } diff --git a/src/mbgl/renderer/fill_bucket.cpp b/src/mbgl/renderer/fill_bucket.cpp index 151e4c4a4..1828ae0a2 100644 --- a/src/mbgl/renderer/fill_bucket.cpp +++ b/src/mbgl/renderer/fill_bucket.cpp @@ -216,8 +216,8 @@ bool FillBucket::hasData() const { } void FillBucket::drawElements(PlainShader& shader) { - char *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); - char *elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); + GLbyte *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); + GLbyte *elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); for (auto& group : triangleGroups) { assert(group); group->array[0].bind(shader, vertexBuffer, triangleElementsBuffer, vertex_index); @@ -228,8 +228,8 @@ void FillBucket::drawElements(PlainShader& shader) { } void FillBucket::drawElements(PatternShader& shader) { - char *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); - char *elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); + GLbyte *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); + GLbyte *elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); for (auto& group : triangleGroups) { assert(group); group->array[1].bind(shader, vertexBuffer, triangleElementsBuffer, vertex_index); @@ -240,8 +240,8 @@ void FillBucket::drawElements(PatternShader& shader) { } void FillBucket::drawVertices(OutlineShader& shader) { - char *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); - char *elements_index = BUFFER_OFFSET(line_elements_start * lineElementsBuffer.itemSize); + GLbyte *vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); + GLbyte *elements_index = BUFFER_OFFSET(line_elements_start * lineElementsBuffer.itemSize); for (auto& group : lineGroups) { assert(group); group->array[0].bind(shader, vertexBuffer, lineElementsBuffer, vertex_index); diff --git a/src/mbgl/renderer/line_bucket.cpp b/src/mbgl/renderer/line_bucket.cpp index 24bda6d0a..f0d52fa51 100644 --- a/src/mbgl/renderer/line_bucket.cpp +++ b/src/mbgl/renderer/line_bucket.cpp @@ -405,8 +405,8 @@ bool LineBucket::hasData() const { } void LineBucket::drawLines(LineShader& shader) { - char* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); - char* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); + GLbyte* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); + GLbyte* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); for (auto& group : triangleGroups) { assert(group); if (!group->elements_length) { @@ -421,8 +421,8 @@ void LineBucket::drawLines(LineShader& shader) { } void LineBucket::drawLineSDF(LineSDFShader& shader) { - char* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); - char* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); + GLbyte* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); + GLbyte* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); for (auto& group : triangleGroups) { assert(group); if (!group->elements_length) { @@ -437,8 +437,8 @@ void LineBucket::drawLineSDF(LineSDFShader& shader) { } void LineBucket::drawLinePatterns(LinepatternShader& shader) { - char* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); - char* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); + GLbyte* vertex_index = BUFFER_OFFSET(vertex_start * vertexBuffer.itemSize); + GLbyte* elements_index = BUFFER_OFFSET(triangle_elements_start * triangleElementsBuffer.itemSize); for (auto& group : triangleGroups) { assert(group); if (!group->elements_length) { diff --git a/src/mbgl/renderer/painter_clipping.cpp b/src/mbgl/renderer/painter_clipping.cpp index 332d2876f..59e40fefe 100644 --- a/src/mbgl/renderer/painter_clipping.cpp +++ b/src/mbgl/renderer/painter_clipping.cpp @@ -16,7 +16,7 @@ void Painter::drawClippingMasks(const std::set& sources) { config.colorMask = { false, false, false, false }; config.depthRange = { 1.0f, 1.0f }; - coveringPlainArray.bind(*plainShader, tileStencilBuffer, BUFFER_OFFSET(0)); + coveringPlainArray.bind(*plainShader, tileStencilBuffer, BUFFER_OFFSET_0); for (const auto& source : sources) { source->drawClippingMasks(*this); diff --git a/src/mbgl/renderer/painter_debug.cpp b/src/mbgl/renderer/painter_debug.cpp index f4f3a19cb..bc4055324 100644 --- a/src/mbgl/renderer/painter_debug.cpp +++ b/src/mbgl/renderer/painter_debug.cpp @@ -59,7 +59,7 @@ void Painter::renderDebugFrame(const mat4 &matrix) { plainShader->u_matrix = matrix; // draw tile outline - tileBorderArray.bind(*plainShader, tileBorderBuffer, BUFFER_OFFSET(0)); + tileBorderArray.bind(*plainShader, tileBorderBuffer, BUFFER_OFFSET_0); plainShader->u_color = {{ 1.0f, 0.0f, 0.0f, 1.0f }}; lineWidth(4.0f * data.pixelRatio); MBGL_CHECK_ERROR(glDrawArrays(GL_LINE_STRIP, 0, (GLsizei)tileBorderBuffer.index())); diff --git a/src/mbgl/renderer/raster_bucket.cpp b/src/mbgl/renderer/raster_bucket.cpp index 70cc1065d..cf72f860a 100644 --- a/src/mbgl/renderer/raster_bucket.cpp +++ b/src/mbgl/renderer/raster_bucket.cpp @@ -30,7 +30,7 @@ bool RasterBucket::setImage(std::unique_ptr image) { void RasterBucket::drawRaster(RasterShader& shader, StaticVertexBuffer &vertices, VertexArrayObject &array) { raster.bind(true); shader.u_image = 0; - array.bind(shader, vertices, BUFFER_OFFSET(0)); + array.bind(shader, vertices, BUFFER_OFFSET_0); MBGL_CHECK_ERROR(glDrawArrays(GL_TRIANGLES, 0, (GLsizei)vertices.index())); } diff --git a/src/mbgl/renderer/symbol_bucket.cpp b/src/mbgl/renderer/symbol_bucket.cpp index 7665fd9a6..11b3bf3d0 100644 --- a/src/mbgl/renderer/symbol_bucket.cpp +++ b/src/mbgl/renderer/symbol_bucket.cpp @@ -565,8 +565,8 @@ void SymbolBucket::swapRenderData() { } void SymbolBucket::drawGlyphs(SDFShader &shader) { - char *vertex_index = BUFFER_OFFSET(0); - char *elements_index = BUFFER_OFFSET(0); + GLbyte *vertex_index = BUFFER_OFFSET_0; + GLbyte *elements_index = BUFFER_OFFSET_0; auto& text = renderData->text; for (auto &group : text.groups) { assert(group); @@ -578,8 +578,8 @@ void SymbolBucket::drawGlyphs(SDFShader &shader) { } void SymbolBucket::drawIcons(SDFShader &shader) { - char *vertex_index = BUFFER_OFFSET(0); - char *elements_index = BUFFER_OFFSET(0); + GLbyte *vertex_index = BUFFER_OFFSET_0; + GLbyte *elements_index = BUFFER_OFFSET_0; auto& icon = renderData->icon; for (auto &group : icon.groups) { assert(group); @@ -591,8 +591,8 @@ void SymbolBucket::drawIcons(SDFShader &shader) { } void SymbolBucket::drawIcons(IconShader &shader) { - char *vertex_index = BUFFER_OFFSET(0); - char *elements_index = BUFFER_OFFSET(0); + GLbyte *vertex_index = BUFFER_OFFSET_0; + GLbyte *elements_index = BUFFER_OFFSET_0; auto& icon = renderData->icon; for (auto &group : icon.groups) { assert(group); @@ -604,7 +604,7 @@ void SymbolBucket::drawIcons(IconShader &shader) { } void SymbolBucket::drawCollisionBoxes(CollisionBoxShader &shader) { - char *vertex_index = BUFFER_OFFSET(0); + GLbyte *vertex_index = BUFFER_OFFSET_0; auto& collisionBox = renderData->collisionBox; for (auto &group : collisionBox.groups) { group->array[0].bind(shader, collisionBox.vertices, vertex_index); diff --git a/src/mbgl/shader/box_shader.cpp b/src/mbgl/shader/box_shader.cpp index 5c290718e..ffcce815f 100644 --- a/src/mbgl/shader/box_shader.cpp +++ b/src/mbgl/shader/box_shader.cpp @@ -16,7 +16,7 @@ CollisionBoxShader::CollisionBoxShader() a_data = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data")); } -void CollisionBoxShader::bind(char *offset) { +void CollisionBoxShader::bind(GLbyte *offset) { const int stride = 12; MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); diff --git a/src/mbgl/shader/box_shader.hpp b/src/mbgl/shader/box_shader.hpp index 832d3e1c0..20d1deec6 100644 --- a/src/mbgl/shader/box_shader.hpp +++ b/src/mbgl/shader/box_shader.hpp @@ -3,6 +3,7 @@ #include #include +#include namespace mbgl { @@ -10,7 +11,7 @@ class CollisionBoxShader : public Shader { public: CollisionBoxShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; Uniform u_scale = {"u_scale", *this}; diff --git a/src/mbgl/shader/circle_shader.cpp b/src/mbgl/shader/circle_shader.cpp index dc8558d10..8fa10191b 100644 --- a/src/mbgl/shader/circle_shader.cpp +++ b/src/mbgl/shader/circle_shader.cpp @@ -14,7 +14,7 @@ CircleShader::CircleShader() ) { } -void CircleShader::bind(char *offset) { +void CircleShader::bind(GLbyte *offset) { MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 4, offset)); } diff --git a/src/mbgl/shader/circle_shader.hpp b/src/mbgl/shader/circle_shader.hpp index ce7bb2d20..58314e837 100644 --- a/src/mbgl/shader/circle_shader.hpp +++ b/src/mbgl/shader/circle_shader.hpp @@ -10,7 +10,7 @@ class CircleShader : public Shader { public: CircleShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this}; diff --git a/src/mbgl/shader/dot_shader.cpp b/src/mbgl/shader/dot_shader.cpp index 67c463944..baec3678b 100644 --- a/src/mbgl/shader/dot_shader.cpp +++ b/src/mbgl/shader/dot_shader.cpp @@ -14,7 +14,7 @@ DotShader::DotShader() ) { } -void DotShader::bind(char *offset) { +void DotShader::bind(GLbyte *offset) { MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 8, offset)); } diff --git a/src/mbgl/shader/dot_shader.hpp b/src/mbgl/shader/dot_shader.hpp index 51263a731..45ac1c26c 100644 --- a/src/mbgl/shader/dot_shader.hpp +++ b/src/mbgl/shader/dot_shader.hpp @@ -10,7 +10,7 @@ class DotShader : public Shader { public: DotShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; Uniform> u_color = {"u_color", *this}; diff --git a/src/mbgl/shader/icon_shader.cpp b/src/mbgl/shader/icon_shader.cpp index 1084ab308..736bb47e7 100644 --- a/src/mbgl/shader/icon_shader.cpp +++ b/src/mbgl/shader/icon_shader.cpp @@ -17,7 +17,7 @@ IconShader::IconShader() a_data2 = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data2")); } -void IconShader::bind(char *offset) { +void IconShader::bind(GLbyte *offset) { const int stride = 16; MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); diff --git a/src/mbgl/shader/icon_shader.hpp b/src/mbgl/shader/icon_shader.hpp index 20d3ebf5c..a0e9397f0 100644 --- a/src/mbgl/shader/icon_shader.hpp +++ b/src/mbgl/shader/icon_shader.hpp @@ -10,7 +10,7 @@ class IconShader : public Shader { public: IconShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this}; diff --git a/src/mbgl/shader/line_shader.cpp b/src/mbgl/shader/line_shader.cpp index 66dff81c9..1e2306939 100644 --- a/src/mbgl/shader/line_shader.cpp +++ b/src/mbgl/shader/line_shader.cpp @@ -15,7 +15,7 @@ LineShader::LineShader() a_data = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data")); } -void LineShader::bind(char *offset) { +void LineShader::bind(GLbyte *offset) { MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 8, offset + 0)); diff --git a/src/mbgl/shader/line_shader.hpp b/src/mbgl/shader/line_shader.hpp index 1a4289ded..77866e89d 100644 --- a/src/mbgl/shader/line_shader.hpp +++ b/src/mbgl/shader/line_shader.hpp @@ -10,7 +10,7 @@ class LineShader : public Shader { public: LineShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this}; diff --git a/src/mbgl/shader/linepattern_shader.cpp b/src/mbgl/shader/linepattern_shader.cpp index 65404cb11..4d416d506 100644 --- a/src/mbgl/shader/linepattern_shader.cpp +++ b/src/mbgl/shader/linepattern_shader.cpp @@ -15,7 +15,7 @@ LinepatternShader::LinepatternShader() a_data = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data")); } -void LinepatternShader::bind(char *offset) { +void LinepatternShader::bind(GLbyte *offset) { MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 8, offset + 0)); diff --git a/src/mbgl/shader/linepattern_shader.hpp b/src/mbgl/shader/linepattern_shader.hpp index a06135180..335281c19 100644 --- a/src/mbgl/shader/linepattern_shader.hpp +++ b/src/mbgl/shader/linepattern_shader.hpp @@ -10,7 +10,7 @@ class LinepatternShader : public Shader { public: LinepatternShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this}; diff --git a/src/mbgl/shader/linesdf_shader.cpp b/src/mbgl/shader/linesdf_shader.cpp index a08c99c74..1a56bb106 100644 --- a/src/mbgl/shader/linesdf_shader.cpp +++ b/src/mbgl/shader/linesdf_shader.cpp @@ -15,7 +15,7 @@ LineSDFShader::LineSDFShader() a_data = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data")); } -void LineSDFShader::bind(char *offset) { +void LineSDFShader::bind(GLbyte *offset) { MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 8, offset + 0)); diff --git a/src/mbgl/shader/linesdf_shader.hpp b/src/mbgl/shader/linesdf_shader.hpp index 4d08916cd..1996d16f1 100644 --- a/src/mbgl/shader/linesdf_shader.hpp +++ b/src/mbgl/shader/linesdf_shader.hpp @@ -10,7 +10,7 @@ class LineSDFShader : public Shader { public: LineSDFShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this}; diff --git a/src/mbgl/shader/outline_shader.cpp b/src/mbgl/shader/outline_shader.cpp index 1d2c3667f..74453468b 100644 --- a/src/mbgl/shader/outline_shader.cpp +++ b/src/mbgl/shader/outline_shader.cpp @@ -14,7 +14,7 @@ OutlineShader::OutlineShader() ) { } -void OutlineShader::bind(char *offset) { +void OutlineShader::bind(GLbyte *offset) { MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 0, offset)); } diff --git a/src/mbgl/shader/outline_shader.hpp b/src/mbgl/shader/outline_shader.hpp index 9b086594b..9de01e214 100644 --- a/src/mbgl/shader/outline_shader.hpp +++ b/src/mbgl/shader/outline_shader.hpp @@ -10,7 +10,7 @@ class OutlineShader : public Shader { public: OutlineShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; Uniform> u_color = {"u_color", *this}; diff --git a/src/mbgl/shader/pattern_shader.cpp b/src/mbgl/shader/pattern_shader.cpp index b5883b956..d6ddab8e2 100644 --- a/src/mbgl/shader/pattern_shader.cpp +++ b/src/mbgl/shader/pattern_shader.cpp @@ -14,7 +14,7 @@ PatternShader::PatternShader() ) { } -void PatternShader::bind(char *offset) { +void PatternShader::bind(GLbyte *offset) { MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 0, offset)); } diff --git a/src/mbgl/shader/pattern_shader.hpp b/src/mbgl/shader/pattern_shader.hpp index 5090a453e..28cd341d8 100644 --- a/src/mbgl/shader/pattern_shader.hpp +++ b/src/mbgl/shader/pattern_shader.hpp @@ -10,7 +10,7 @@ class PatternShader : public Shader { public: PatternShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; Uniform> u_pattern_tl_a = {"u_pattern_tl_a", *this}; diff --git a/src/mbgl/shader/plain_shader.cpp b/src/mbgl/shader/plain_shader.cpp index bb719f47d..52fef07c0 100644 --- a/src/mbgl/shader/plain_shader.cpp +++ b/src/mbgl/shader/plain_shader.cpp @@ -14,7 +14,7 @@ PlainShader::PlainShader() ) { } -void PlainShader::bind(char *offset) { +void PlainShader::bind(GLbyte *offset) { MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 0, offset)); } diff --git a/src/mbgl/shader/plain_shader.hpp b/src/mbgl/shader/plain_shader.hpp index 266600024..cf2bcc38c 100644 --- a/src/mbgl/shader/plain_shader.hpp +++ b/src/mbgl/shader/plain_shader.hpp @@ -10,7 +10,7 @@ class PlainShader : public Shader { public: PlainShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; Uniform> u_color = {"u_color", *this}; diff --git a/src/mbgl/shader/raster_shader.cpp b/src/mbgl/shader/raster_shader.cpp index ce03488ac..b8496230b 100644 --- a/src/mbgl/shader/raster_shader.cpp +++ b/src/mbgl/shader/raster_shader.cpp @@ -14,7 +14,7 @@ RasterShader::RasterShader() ) { } -void RasterShader::bind(char *offset) { +void RasterShader::bind(GLbyte *offset) { MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, 0, offset)); } diff --git a/src/mbgl/shader/raster_shader.hpp b/src/mbgl/shader/raster_shader.hpp index e869fb741..705efec99 100644 --- a/src/mbgl/shader/raster_shader.hpp +++ b/src/mbgl/shader/raster_shader.hpp @@ -10,7 +10,7 @@ class RasterShader : public Shader { public: RasterShader(); - void bind(char *offset); + void bind(GLbyte *offset) final; UniformMatrix<4> u_matrix = {"u_matrix", *this}; Uniform u_image = {"u_image", *this}; diff --git a/src/mbgl/shader/sdf_shader.cpp b/src/mbgl/shader/sdf_shader.cpp index 7b729a458..144ba6c47 100644 --- a/src/mbgl/shader/sdf_shader.cpp +++ b/src/mbgl/shader/sdf_shader.cpp @@ -17,7 +17,7 @@ SDFShader::SDFShader() a_data2 = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data2")); } -void SDFGlyphShader::bind(char *offset) { +void SDFGlyphShader::bind(GLbyte *offset) { const int stride = 16; MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); @@ -33,7 +33,7 @@ void SDFGlyphShader::bind(char *offset) { MBGL_CHECK_ERROR(glVertexAttribPointer(a_data2, 4, GL_UNSIGNED_BYTE, false, stride, offset + 12)); } -void SDFIconShader::bind(char *offset) { +void SDFIconShader::bind(GLbyte *offset) { const int stride = 16; MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos)); diff --git a/src/mbgl/shader/sdf_shader.hpp b/src/mbgl/shader/sdf_shader.hpp index f8e0aef2b..a56f3b2eb 100644 --- a/src/mbgl/shader/sdf_shader.hpp +++ b/src/mbgl/shader/sdf_shader.hpp @@ -10,8 +10,6 @@ class SDFShader : public Shader { public: SDFShader(); - virtual void bind(char *offset) = 0; - UniformMatrix<4> u_matrix = {"u_matrix", *this}; UniformMatrix<4> u_exmatrix = {"u_exmatrix", *this}; Uniform> u_color = {"u_color", *this}; @@ -34,12 +32,12 @@ protected: class SDFGlyphShader : public SDFShader { public: - void bind(char *offset); + void bind(GLbyte *offset) final; }; class SDFIconShader : public SDFShader { public: - void bind(char *offset); + void bind(GLbyte *offset) final; }; } diff --git a/src/mbgl/shader/shader.hpp b/src/mbgl/shader/shader.hpp index 2a1cf39fe..9b150c37e 100644 --- a/src/mbgl/shader/shader.hpp +++ b/src/mbgl/shader/shader.hpp @@ -21,6 +21,8 @@ public: return program; } + virtual void bind(GLbyte *offset) = 0; + protected: GLint a_pos = -1;