summaryrefslogtreecommitdiff
path: root/include/mbgl
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-08-14 18:24:53 +0200
committerKonstantin Käfer <mail@kkaefer.com>2014-08-14 18:30:45 +0200
commitd6bfb4be651d512708d953a26f27907c4f7940d7 (patch)
tree9bef6e8fe99e9b00087a3dee94408aa899c3f1ae /include/mbgl
parent1799c1b04c7123fa66fe333bdabf0ba575c9c54c (diff)
downloadqtlocation-mapboxgl-d6bfb4be651d512708d953a26f27907c4f7940d7.tar.gz
fix binding to vaos
Diffstat (limited to 'include/mbgl')
-rw-r--r--include/mbgl/geometry/elements_buffer.hpp3
-rw-r--r--include/mbgl/geometry/vao.hpp5
-rw-r--r--include/mbgl/platform/gl.hpp9
-rw-r--r--include/mbgl/renderer/fill_bucket.hpp5
-rw-r--r--include/mbgl/renderer/line_bucket.hpp4
-rw-r--r--include/mbgl/renderer/symbol_bucket.hpp7
6 files changed, 21 insertions, 12 deletions
diff --git a/include/mbgl/geometry/elements_buffer.hpp b/include/mbgl/geometry/elements_buffer.hpp
index ed60338e08..ce07c9fa67 100644
--- a/include/mbgl/geometry/elements_buffer.hpp
+++ b/include/mbgl/geometry/elements_buffer.hpp
@@ -6,8 +6,9 @@
namespace mbgl {
+template <int count>
struct ElementGroup {
- VertexArrayObject array;
+ std::array<VertexArrayObject, count> array;
uint32_t vertex_length;
uint32_t elements_length;
diff --git a/include/mbgl/geometry/vao.hpp b/include/mbgl/geometry/vao.hpp
index e27e2c58a4..1023fc118d 100644
--- a/include/mbgl/geometry/vao.hpp
+++ b/include/mbgl/geometry/vao.hpp
@@ -22,7 +22,7 @@ public:
if (shader_ptr != &shader) {
if (shader_ptr != nullptr) {
- fprintf(stderr, "shader rebind!");
+ throw std::runtime_error("shader rebind!");
}
#endif
vertex_buffer.bind();
@@ -55,6 +55,9 @@ public:
}
if (shader_ptr != &shader) {
+ if (shader_ptr != nullptr) {
+ throw std::runtime_error("shader rebind!");
+ }
#endif
vertex_buffer.bind();
elements_buffer.bind();
diff --git a/include/mbgl/platform/gl.hpp b/include/mbgl/platform/gl.hpp
index a29b230dbf..cc2a681d42 100644
--- a/include/mbgl/platform/gl.hpp
+++ b/include/mbgl/platform/gl.hpp
@@ -26,9 +26,12 @@
#elif TARGET_OS_MAC
#include <OpenGL/OpenGL.h>
#include <OpenGL/gl.h>
- #define glGenVertexArrays glGenVertexArraysAPPLE
- #define glBindVertexArray glBindVertexArrayAPPLE
- #define glDeleteVertexArrays glDeleteVertexArraysAPPLE
+ #if GL_APPLE_vertex_array_object
+ #define GL_ARB_vertex_array_object 1
+ #define glGenVertexArrays glGenVertexArraysAPPLE
+ #define glBindVertexArray glBindVertexArrayAPPLE
+ #define glDeleteVertexArrays glDeleteVertexArraysAPPLE
+ #endif
#else
#error Unsupported Apple platform
#endif
diff --git a/include/mbgl/renderer/fill_bucket.hpp b/include/mbgl/renderer/fill_bucket.hpp
index e9340cce68..e8d6bf99e1 100644
--- a/include/mbgl/renderer/fill_bucket.hpp
+++ b/include/mbgl/renderer/fill_bucket.hpp
@@ -34,9 +34,8 @@ class FillBucket : public Bucket {
static void *realloc(void *data, void *ptr, unsigned int size);
static void free(void *userData, void *ptr);
-
- typedef ElementGroup triangle_group_type;
- typedef ElementGroup line_group_type;
+ typedef ElementGroup<2> triangle_group_type;
+ typedef ElementGroup<1> line_group_type;
public:
FillBucket(FillVertexBuffer& vertexBuffer,
TriangleElementsBuffer& triangleElementsBuffer,
diff --git a/include/mbgl/renderer/line_bucket.hpp b/include/mbgl/renderer/line_bucket.hpp
index f65ca35605..a33dde34e0 100644
--- a/include/mbgl/renderer/line_bucket.hpp
+++ b/include/mbgl/renderer/line_bucket.hpp
@@ -20,8 +20,8 @@ class LinejoinShader;
struct pbf;
class LineBucket : public Bucket {
- typedef ElementGroup triangle_group_type;
- typedef ElementGroup point_group_type;
+ typedef ElementGroup<1> triangle_group_type;
+ typedef ElementGroup<1> point_group_type;
public:
LineBucket(LineVertexBuffer& vertexBuffer,
TriangleElementsBuffer& triangleElementsBuffer,
diff --git a/include/mbgl/renderer/symbol_bucket.hpp b/include/mbgl/renderer/symbol_bucket.hpp
index e890274238..fb1678fc8b 100644
--- a/include/mbgl/renderer/symbol_bucket.hpp
+++ b/include/mbgl/renderer/symbol_bucket.hpp
@@ -50,6 +50,9 @@ typedef std::vector<Symbol> Symbols;
class SymbolBucket : public Bucket {
+ typedef ElementGroup<1> TextElementGroup;
+ typedef ElementGroup<1> IconElementGroup;
+
public:
SymbolBucket(const StyleBucketSymbol &properties, Collision &collision);
@@ -94,13 +97,13 @@ private:
struct {
TextVertexBuffer vertices;
TriangleElementsBuffer triangles;
- std::vector<ElementGroup> groups;
+ std::vector<TextElementGroup> groups;
} text;
struct {
IconVertexBuffer vertices;
TriangleElementsBuffer triangles;
- std::vector<ElementGroup> groups;
+ std::vector<IconElementGroup> groups;
} icon;
};