diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-09-26 12:53:32 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-10-05 10:52:19 -0700 |
commit | 7a3bef091e7390fa57bf33f1a704c893768b5625 (patch) | |
tree | af798d879923fd45e763f5dc5449b7e8419aa192 /src/mbgl/gl/context.hpp | |
parent | ac8a74ebccb85f83c40b9fccfeb11dc2cb3c79e4 (diff) | |
download | qtlocation-mapboxgl-7a3bef091e7390fa57bf33f1a704c893768b5625.tar.gz |
[core] Refactor Buffer
Diffstat (limited to 'src/mbgl/gl/context.hpp')
-rw-r--r-- | src/mbgl/gl/context.hpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/mbgl/gl/context.hpp b/src/mbgl/gl/context.hpp index 0ec846033a..e26b35e7c0 100644 --- a/src/mbgl/gl/context.hpp +++ b/src/mbgl/gl/context.hpp @@ -4,6 +4,8 @@ #include <mbgl/gl/state.hpp> #include <mbgl/gl/value.hpp> #include <mbgl/gl/texture.hpp> +#include <mbgl/gl/vertex_buffer.hpp> +#include <mbgl/gl/index_buffer.hpp> #include <mbgl/util/noncopyable.hpp> #include <memory> @@ -22,12 +24,24 @@ public: UniqueProgram createProgram(); UniqueShader createVertexShader(); UniqueShader createFragmentShader(); - UniqueBuffer createBuffer(); UniqueTexture createTexture(); UniqueVertexArray createVertexArray(); UniqueFramebuffer createFramebuffer(); - void uploadBuffer(BufferType, size_t, void*); + template <class V> + VertexBuffer<V> createVertexBuffer(std::vector<V>&& v) { + return VertexBuffer<V> { + v.size(), + createVertexBuffer(v.data(), v.size() * sizeof(V)) + }; + } + + template <class P> + IndexBuffer<P> createIndexBuffer(std::vector<P>&& v) { + return IndexBuffer<P> { + createIndexBuffer(v.data(), v.size() * sizeof(P)) + }; + } // Create a texture from an image with data. template <typename Image> @@ -98,9 +112,10 @@ public: State<value::BindVertexArray> vertexArrayObject; private: + UniqueBuffer createVertexBuffer(const void* data, std::size_t size); + UniqueBuffer createIndexBuffer(const void* data, std::size_t size); UniqueTexture createTexture(uint16_t width, uint16_t height, const void* data, TextureUnit); -private: friend detail::ProgramDeleter; friend detail::ShaderDeleter; friend detail::BufferDeleter; |