summaryrefslogtreecommitdiff
path: root/src/mbgl/shader/box_shader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/shader/box_shader.cpp')
-rw-r--r--src/mbgl/shader/box_shader.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/mbgl/shader/box_shader.cpp b/src/mbgl/shader/box_shader.cpp
new file mode 100644
index 0000000000..2676223a9d
--- /dev/null
+++ b/src/mbgl/shader/box_shader.cpp
@@ -0,0 +1,32 @@
+#include <mbgl/shader/box_shader.hpp>
+#include <mbgl/shader/shaders.hpp>
+#include <mbgl/platform/gl.hpp>
+
+#include <cstdio>
+
+using namespace mbgl;
+
+CollisionBoxShader::CollisionBoxShader()
+ : Shader(
+ "collisionbox",
+ shaders[BOX_SHADER].vertex,
+ shaders[BOX_SHADER].fragment
+ ) {
+ a_pos = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_pos"));
+ a_extrude = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_extrude"));
+ a_data = MBGL_CHECK_ERROR(glGetAttribLocation(program, "a_data"));
+}
+
+void CollisionBoxShader::bind(char *offset) {
+ const int stride = 12;
+
+ MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_pos));
+ MBGL_CHECK_ERROR(glVertexAttribPointer(a_pos, 2, GL_SHORT, false, stride, offset + 0));
+
+ MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_extrude));
+ MBGL_CHECK_ERROR(glVertexAttribPointer(a_extrude, 2, GL_SHORT, false, stride, offset + 4));
+
+ MBGL_CHECK_ERROR(glEnableVertexAttribArray(a_data));
+ MBGL_CHECK_ERROR(glVertexAttribPointer(a_data, 2, GL_UNSIGNED_BYTE, false, stride, offset + 8));
+
+}