summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r--src/mbgl/renderer/circle_bucket.hpp2
-rw-r--r--src/mbgl/renderer/debug_bucket.cpp3
-rw-r--r--src/mbgl/renderer/debug_bucket.hpp5
-rw-r--r--src/mbgl/renderer/fill_bucket.hpp4
-rw-r--r--src/mbgl/renderer/line_bucket.hpp2
-rw-r--r--src/mbgl/renderer/painter.cpp7
-rw-r--r--src/mbgl/renderer/painter.hpp8
-rw-r--r--src/mbgl/renderer/painter_background.cpp6
-rw-r--r--src/mbgl/renderer/painter_clipping.cpp3
-rw-r--r--src/mbgl/renderer/painter_debug.cpp21
-rw-r--r--src/mbgl/renderer/painter_raster.cpp3
-rw-r--r--src/mbgl/renderer/symbol_bucket.hpp6
12 files changed, 48 insertions, 22 deletions
diff --git a/src/mbgl/renderer/circle_bucket.hpp b/src/mbgl/renderer/circle_bucket.hpp
index a93b052d68..af7041a238 100644
--- a/src/mbgl/renderer/circle_bucket.hpp
+++ b/src/mbgl/renderer/circle_bucket.hpp
@@ -22,7 +22,7 @@ public:
gl::VertexVector<CircleVertex> vertices;
gl::IndexVector<gl::Triangles> triangles;
- std::vector<gl::Segment> segments;
+ gl::SegmentVector<CircleAttributes> segments;
optional<gl::VertexBuffer<CircleVertex>> vertexBuffer;
optional<gl::IndexBuffer<gl::Triangles>> indexBuffer;
diff --git a/src/mbgl/renderer/debug_bucket.cpp b/src/mbgl/renderer/debug_bucket.cpp
index 4beb16a996..deceec6ab7 100644
--- a/src/mbgl/renderer/debug_bucket.cpp
+++ b/src/mbgl/renderer/debug_bucket.cpp
@@ -80,7 +80,8 @@ DebugBucket::DebugBucket(const OverscaledTileID& id,
modified(std::move(modified_)),
expires(std::move(expires_)),
debugMode(debugMode_),
- vertexBuffer(context.createVertexBuffer(buildTextVertices(id, renderable_, complete_, modified_, expires_, debugMode_))) {
+ vertexBuffer(context.createVertexBuffer(buildTextVertices(id, renderable_, complete_, modified_, expires_, debugMode_))),
+ segments(vertexBuffer) {
}
} // namespace mbgl
diff --git a/src/mbgl/renderer/debug_bucket.hpp b/src/mbgl/renderer/debug_bucket.hpp
index 4c173786ae..96703d87d0 100644
--- a/src/mbgl/renderer/debug_bucket.hpp
+++ b/src/mbgl/renderer/debug_bucket.hpp
@@ -6,7 +6,7 @@
#include <mbgl/util/optional.hpp>
#include <mbgl/util/noncopyable.hpp>
#include <mbgl/gl/vertex_buffer.hpp>
-#include <mbgl/programs/fill_program.hpp>
+#include <mbgl/programs/debug_program.hpp>
namespace mbgl {
@@ -32,7 +32,8 @@ public:
const optional<Timestamp> expires;
const MapDebugOptions debugMode;
- gl::VertexBuffer<FillVertex, gl::Lines> vertexBuffer;
+ gl::VertexBuffer<DebugVertex, gl::Lines> vertexBuffer;
+ gl::SegmentVector<DebugAttributes> segments;
};
} // namespace mbgl
diff --git a/src/mbgl/renderer/fill_bucket.hpp b/src/mbgl/renderer/fill_bucket.hpp
index 4ea558b629..edb1521c1d 100644
--- a/src/mbgl/renderer/fill_bucket.hpp
+++ b/src/mbgl/renderer/fill_bucket.hpp
@@ -22,8 +22,8 @@ public:
gl::VertexVector<FillVertex> vertices;
gl::IndexVector<gl::Lines> lines;
gl::IndexVector<gl::Triangles> triangles;
- std::vector<gl::Segment> lineSegments;
- std::vector<gl::Segment> triangleSegments;
+ gl::SegmentVector<FillAttributes> lineSegments;
+ gl::SegmentVector<FillAttributes> triangleSegments;
optional<gl::VertexBuffer<FillVertex>> vertexBuffer;
optional<gl::IndexBuffer<gl::Lines>> lineIndexBuffer;
diff --git a/src/mbgl/renderer/line_bucket.hpp b/src/mbgl/renderer/line_bucket.hpp
index 9903ca1842..ae9d7d7f0e 100644
--- a/src/mbgl/renderer/line_bucket.hpp
+++ b/src/mbgl/renderer/line_bucket.hpp
@@ -28,7 +28,7 @@ public:
gl::VertexVector<LineVertex> vertices;
gl::IndexVector<gl::Triangles> triangles;
- std::vector<gl::Segment> segments;
+ gl::SegmentVector<LineAttributes> segments;
optional<gl::VertexBuffer<LineVertex>> vertexBuffer;
optional<gl::IndexBuffer<gl::Triangles>> indexBuffer;
diff --git a/src/mbgl/renderer/painter.cpp b/src/mbgl/renderer/painter.cpp
index a09e3b73fc..9dee668874 100644
--- a/src/mbgl/renderer/painter.cpp
+++ b/src/mbgl/renderer/painter.cpp
@@ -77,8 +77,11 @@ Painter::Painter(gl::Context& context_, const TransformState& state_)
: context(context_),
state(state_),
tileTriangleVertexBuffer(context.createVertexBuffer(tileTriangles())),
- tileLineStripVertexBuffer(context.createVertexBuffer(tileLineStrip())),
- rasterVertexBuffer(context.createVertexBuffer(rasterTriangleStrip())) {
+ tileTriangleSegments(tileTriangleVertexBuffer),
+ tileBorderVertexBuffer(context.createVertexBuffer(tileLineStrip())),
+ tileBorderSegments(tileBorderVertexBuffer),
+ rasterVertexBuffer(context.createVertexBuffer(rasterTriangleStrip())),
+ rasterSegments(rasterVertexBuffer) {
#ifndef NDEBUG
gl::debugging::enable();
#endif
diff --git a/src/mbgl/renderer/painter.hpp b/src/mbgl/renderer/painter.hpp
index 3f5f28dad1..2aa317f95a 100644
--- a/src/mbgl/renderer/painter.hpp
+++ b/src/mbgl/renderer/painter.hpp
@@ -9,6 +9,7 @@
#include <mbgl/renderer/bucket.hpp>
#include <mbgl/gl/context.hpp>
+#include <mbgl/programs/debug_program.hpp>
#include <mbgl/programs/fill_program.hpp>
#include <mbgl/programs/raster_program.hpp>
@@ -157,8 +158,13 @@ private:
#endif
gl::VertexBuffer<FillVertex, gl::Triangles> tileTriangleVertexBuffer;
- gl::VertexBuffer<FillVertex, gl::LineStrip> tileLineStripVertexBuffer;
+ gl::SegmentVector<FillAttributes> tileTriangleSegments;
+
+ gl::VertexBuffer<DebugVertex, gl::LineStrip> tileBorderVertexBuffer;
+ gl::SegmentVector<DebugAttributes> tileBorderSegments;
+
gl::VertexBuffer<RasterVertex, gl::TriangleStrip> rasterVertexBuffer;
+ gl::SegmentVector<RasterAttributes> rasterSegments;
};
} // namespace mbgl
diff --git a/src/mbgl/renderer/painter_background.cpp b/src/mbgl/renderer/painter_background.cpp
index 5e71cb7b20..4e87829914 100644
--- a/src/mbgl/renderer/painter_background.cpp
+++ b/src/mbgl/renderer/painter_background.cpp
@@ -44,7 +44,8 @@ void Painter::renderBackground(PaintParameters& parameters, const BackgroundLaye
tileID,
state
),
- tileTriangleVertexBuffer
+ tileTriangleVertexBuffer,
+ tileTriangleSegments
);
}
} else {
@@ -62,7 +63,8 @@ void Painter::renderBackground(PaintParameters& parameters, const BackgroundLaye
uniforms::u_outline_color::Value{ properties.backgroundColor.value },
uniforms::u_world::Value{ context.viewport.getCurrentValue().size },
},
- tileTriangleVertexBuffer
+ tileTriangleVertexBuffer,
+ tileTriangleSegments
);
}
}
diff --git a/src/mbgl/renderer/painter_clipping.cpp b/src/mbgl/renderer/painter_clipping.cpp
index 2054424475..2b876667c9 100644
--- a/src/mbgl/renderer/painter_clipping.cpp
+++ b/src/mbgl/renderer/painter_clipping.cpp
@@ -26,7 +26,8 @@ void Painter::renderClippingMask(const UnwrappedTileID& tileID, const ClipID& cl
uniforms::u_outline_color::Value{ Color {} },
uniforms::u_world::Value{ context.viewport.getCurrentValue().size },
},
- tileTriangleVertexBuffer
+ tileTriangleVertexBuffer,
+ tileTriangleSegments
);
}
diff --git a/src/mbgl/renderer/painter_debug.cpp b/src/mbgl/renderer/painter_debug.cpp
index 8969354d23..d0fb9f3435 100644
--- a/src/mbgl/renderer/painter_debug.cpp
+++ b/src/mbgl/renderer/painter_debug.cpp
@@ -18,7 +18,7 @@ void Painter::renderTileDebug(const RenderTile& renderTile) {
MBGL_DEBUG_GROUP(std::string { "debug " } + util::toString(renderTile.id));
- auto draw = [&] (Color color, const auto& vertexBuffer, auto drawMode) {
+ auto draw = [&] (Color color, const auto& vertexBuffer, const auto& segments, auto drawMode) {
programs->debug.draw(
context,
drawMode,
@@ -29,7 +29,8 @@ void Painter::renderTileDebug(const RenderTile& renderTile) {
uniforms::u_matrix::Value{ renderTile.matrix },
uniforms::u_color::Value{ color }
},
- vertexBuffer
+ vertexBuffer,
+ segments
);
};
@@ -45,12 +46,22 @@ void Painter::renderTileDebug(const RenderTile& renderTile) {
tile.expires, frame.debugOptions, context);
}
- draw(Color::white(), tile.debugBucket->vertexBuffer, gl::Lines { 4.0f * frame.pixelRatio });
- draw(Color::black(), tile.debugBucket->vertexBuffer, gl::Lines { 2.0f * frame.pixelRatio });
+ draw(Color::white(),
+ tile.debugBucket->vertexBuffer,
+ tile.debugBucket->segments,
+ gl::Lines { 4.0f * frame.pixelRatio });
+
+ draw(Color::black(),
+ tile.debugBucket->vertexBuffer,
+ tile.debugBucket->segments,
+ gl::Lines { 2.0f * frame.pixelRatio });
}
if (frame.debugOptions & MapDebugOptions::TileBorders) {
- draw(Color::red(), tileLineStripVertexBuffer, gl::LineStrip { 4.0f * frame.pixelRatio });
+ draw(Color::red(),
+ tileBorderVertexBuffer,
+ tileBorderSegments,
+ gl::LineStrip { 4.0f * frame.pixelRatio });
}
}
diff --git a/src/mbgl/renderer/painter_raster.cpp b/src/mbgl/renderer/painter_raster.cpp
index e19cde289a..fe25878016 100644
--- a/src/mbgl/renderer/painter_raster.cpp
+++ b/src/mbgl/renderer/painter_raster.cpp
@@ -75,7 +75,8 @@ void Painter::renderRaster(PaintParameters& parameters,
uniforms::u_scale_parent::Value{ 1.0f },
uniforms::u_tl_parent::Value{ std::array<float, 2> {{ 0.0f, 0.0f }} },
},
- rasterVertexBuffer
+ rasterVertexBuffer,
+ rasterSegments
);
}
diff --git a/src/mbgl/renderer/symbol_bucket.hpp b/src/mbgl/renderer/symbol_bucket.hpp
index 327049b280..e5c44d8a3c 100644
--- a/src/mbgl/renderer/symbol_bucket.hpp
+++ b/src/mbgl/renderer/symbol_bucket.hpp
@@ -36,7 +36,7 @@ public:
struct TextBuffer {
gl::VertexVector<SymbolVertex> vertices;
gl::IndexVector<gl::Triangles> triangles;
- std::vector<gl::Segment> segments;
+ gl::SegmentVector<SymbolAttributes> segments;
optional<gl::VertexBuffer<SymbolVertex>> vertexBuffer;
optional<gl::IndexBuffer<gl::Triangles>> indexBuffer;
@@ -45,7 +45,7 @@ public:
struct IconBuffer {
gl::VertexVector<SymbolVertex> vertices;
gl::IndexVector<gl::Triangles> triangles;
- std::vector<gl::Segment> segments;
+ gl::SegmentVector<SymbolAttributes> segments;
optional<gl::VertexBuffer<SymbolVertex>> vertexBuffer;
optional<gl::IndexBuffer<gl::Triangles>> indexBuffer;
@@ -54,7 +54,7 @@ public:
struct CollisionBoxBuffer {
gl::VertexVector<CollisionBoxVertex> vertices;
gl::IndexVector<gl::Lines> lines;
- std::vector<gl::Segment> segments;
+ gl::SegmentVector<CollisionBoxAttributes> segments;
optional<gl::VertexBuffer<CollisionBoxVertex>> vertexBuffer;
optional<gl::IndexBuffer<gl::Lines>> indexBuffer;