diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2014-08-14 18:24:53 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2014-08-14 18:30:45 +0200 |
commit | d6bfb4be651d512708d953a26f27907c4f7940d7 (patch) | |
tree | 9bef6e8fe99e9b00087a3dee94408aa899c3f1ae /include | |
parent | 1799c1b04c7123fa66fe333bdabf0ba575c9c54c (diff) | |
download | qtlocation-mapboxgl-d6bfb4be651d512708d953a26f27907c4f7940d7.tar.gz |
fix binding to vaos
Diffstat (limited to 'include')
-rw-r--r-- | include/mbgl/geometry/elements_buffer.hpp | 3 | ||||
-rw-r--r-- | include/mbgl/geometry/vao.hpp | 5 | ||||
-rw-r--r-- | include/mbgl/platform/gl.hpp | 9 | ||||
-rw-r--r-- | include/mbgl/renderer/fill_bucket.hpp | 5 | ||||
-rw-r--r-- | include/mbgl/renderer/line_bucket.hpp | 4 | ||||
-rw-r--r-- | include/mbgl/renderer/symbol_bucket.hpp | 7 |
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; }; |