diff options
Diffstat (limited to 'src/mbgl/renderer/symbol_bucket.cpp')
-rw-r--r-- | src/mbgl/renderer/symbol_bucket.cpp | 71 |
1 files changed, 4 insertions, 67 deletions
diff --git a/src/mbgl/renderer/symbol_bucket.cpp b/src/mbgl/renderer/symbol_bucket.cpp index 565c58c7ed..5edf742917 100644 --- a/src/mbgl/renderer/symbol_bucket.cpp +++ b/src/mbgl/renderer/symbol_bucket.cpp @@ -1,10 +1,6 @@ #include <mbgl/renderer/symbol_bucket.hpp> #include <mbgl/renderer/painter.hpp> #include <mbgl/style/layers/symbol_layer.hpp> -#include <mbgl/shader/symbol_sdf_shader.hpp> -#include <mbgl/shader/symbol_icon_shader.hpp> -#include <mbgl/shader/collision_box_shader.hpp> -#include <mbgl/gl/gl.hpp> namespace mbgl { @@ -31,7 +27,7 @@ void SymbolBucket::upload(gl::Context& context) { icon.indexBuffer = context.createIndexBuffer(std::move(icon.triangles)); } - if (hasCollisionBoxData()) { + if (!collisionBox.vertices.empty()) { collisionBox.vertexBuffer = context.createVertexBuffer(std::move(collisionBox.vertices)); } @@ -51,74 +47,15 @@ bool SymbolBucket::hasData() const { } bool SymbolBucket::hasTextData() const { - return !text.groups.empty(); + return !text.segments.empty(); } bool SymbolBucket::hasIconData() const { - return !icon.groups.empty(); + return !icon.segments.empty(); } bool SymbolBucket::hasCollisionBoxData() const { - return !collisionBox.groups.empty(); -} - -bool SymbolBucket::needsClipping() const { - return mode == MapMode::Still; -} - -void SymbolBucket::drawGlyphs(SymbolSDFShader& shader, - gl::Context& context, - PaintMode paintMode) { - GLbyte* vertex_index = BUFFER_OFFSET_0; - GLbyte* elements_index = BUFFER_OFFSET_0; - for (auto& group : text.groups) { - group.getVAO(shader, paintMode).bind( - shader, *text.vertexBuffer, *text.indexBuffer, vertex_index, context); - MBGL_CHECK_ERROR(glDrawElements(GL_TRIANGLES, static_cast<GLsizei>(group.indexLength * 3), GL_UNSIGNED_SHORT, - elements_index)); - vertex_index += group.vertexLength * text.vertexBuffer->vertexSize; - elements_index += group.indexLength * text.indexBuffer->primitiveSize; - } -} - -void SymbolBucket::drawIcons(SymbolSDFShader& shader, - gl::Context& context, - PaintMode paintMode) { - GLbyte* vertex_index = BUFFER_OFFSET_0; - GLbyte* elements_index = BUFFER_OFFSET_0; - for (auto& group : icon.groups) { - group.getVAO(shader, paintMode).bind( - shader, *icon.vertexBuffer, *icon.indexBuffer, vertex_index, context); - MBGL_CHECK_ERROR(glDrawElements(GL_TRIANGLES, static_cast<GLsizei>(group.indexLength * 3), GL_UNSIGNED_SHORT, - elements_index)); - vertex_index += group.vertexLength * icon.vertexBuffer->vertexSize; - elements_index += group.indexLength * icon.indexBuffer->primitiveSize; - } -} - -void SymbolBucket::drawIcons(SymbolIconShader& shader, - gl::Context& context, - PaintMode paintMode) { - GLbyte* vertex_index = BUFFER_OFFSET_0; - GLbyte* elements_index = BUFFER_OFFSET_0; - for (auto& group : icon.groups) { - group.getVAO(shader, paintMode).bind( - shader, *icon.vertexBuffer, *icon.indexBuffer, vertex_index, context); - MBGL_CHECK_ERROR(glDrawElements(GL_TRIANGLES, static_cast<GLsizei>(group.indexLength * 3), GL_UNSIGNED_SHORT, - elements_index)); - vertex_index += group.vertexLength * icon.vertexBuffer->vertexSize; - elements_index += group.indexLength * icon.indexBuffer->primitiveSize; - } -} - -void SymbolBucket::drawCollisionBoxes(CollisionBoxShader& shader, - gl::Context& context) { - GLbyte* vertex_index = BUFFER_OFFSET_0; - for (auto& group : collisionBox.groups) { - group.getVAO(shader, PaintMode::Regular).bind( - shader, *collisionBox.vertexBuffer, vertex_index, context); - MBGL_CHECK_ERROR(glDrawArrays(GL_LINES, 0, static_cast<GLsizei>(group.vertexLength))); - } + return bool(collisionBox.vertexBuffer); } } // namespace mbgl |