summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-01-16 10:54:16 +0100
committerKonstantin Käfer <mail@kkaefer.com>2014-01-16 10:54:16 +0100
commit2d008787fc113bf352674b7a1c7e57f47f8a635f (patch)
tree97c884f8213cd4ab7449b38f14550c44202952cc
parenta3a5a96bfed27b02f3a9f7cc2863db988b4e41a2 (diff)
downloadqtlocation-mapboxgl-2d008787fc113bf352674b7a1c7e57f47f8a635f.tar.gz
add tile border (debug)
-rw-r--r--include/llmr/renderer/painter.hpp1
-rw-r--r--src/renderer/painter.cpp27
2 files changed, 28 insertions, 0 deletions
diff --git a/include/llmr/renderer/painter.hpp b/include/llmr/renderer/painter.hpp
index 3f6235d8f3..0ae70eebdf 100644
--- a/include/llmr/renderer/painter.hpp
+++ b/include/llmr/renderer/painter.hpp
@@ -39,6 +39,7 @@ private:
LineShader *lineShader;
uint32_t tile_stencil_buffer;
+ uint32_t tile_border_buffer;
};
}
diff --git a/src/renderer/painter.cpp b/src/renderer/painter.cpp
index 00acb1fb40..8c677e1cf9 100644
--- a/src/renderer/painter.cpp
+++ b/src/renderer/painter.cpp
@@ -18,6 +18,14 @@ GLshort tile_stencil_vertices[] = {
4096, 4096
};
+GLshort tile_border_vertices[] = {
+ 0, 0,
+ 4095, 0,
+ 4095, 4095,
+ 0, 4095,
+ 0, 0
+};
+
painter::painter(class transform *transform)
: transform(transform),
currentShader(NULL),
@@ -37,6 +45,12 @@ void painter::setup() {
glBindBuffer(GL_ARRAY_BUFFER, tile_stencil_buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(tile_stencil_vertices), tile_stencil_vertices, GL_STATIC_DRAW);
+ // Set up the tile boundary lines we're using to draw the tile outlines.
+ glGenBuffers(1, &tile_border_buffer);
+ glBindBuffer(GL_ARRAY_BUFFER, tile_border_buffer);
+ glBufferData(GL_ARRAY_BUFFER, sizeof(tile_border_vertices), tile_border_vertices, GL_STATIC_DRAW);
+
+
glEnable(GL_STENCIL_TEST);
@@ -140,6 +154,19 @@ void painter::render(tile::ptr tile) {
glUniform4f(lineShader->u_color, 0.0f, 0.0f, 0.0f, 1.0f);
glLineWidth(1.0f);
glDrawArrays(GL_LINE_STRIP, 0, tile->lineVertex.length());
+
+
+
+
+
+ // draw tile outline
+ switchShader(lineShader);
+ glUniformMatrix4fv(lineShader->u_matrix, 1, GL_FALSE, matrix);
+ glBindBuffer(GL_ARRAY_BUFFER, tile_border_buffer);
+ glVertexAttribPointer(lineShader->a_pos, 2, GL_SHORT, false, 0, BUFFER_OFFSET(0));
+ glUniform4f(lineShader->u_color, 1.0f, 1.0f, 1.0f, 1.0f);
+ glLineWidth(4.0f);
+ glDrawArrays(GL_LINE_STRIP, 0, sizeof(tile_border_vertices));
}
void painter::viewport() {