diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-06-20 08:44:06 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-07-06 05:37:55 +0200 |
commit | 9cdc576f6055cbb308551f09e3566b34233b226e (patch) | |
tree | 7106c6ef615e0771a070afc3180d30cade558e74 /src/video_core/renderer_opengl/utils.cpp | |
parent | gl_buffer_cache: Implement with generic buffer cache (diff) | |
download | yuzu-9cdc576f6055cbb308551f09e3566b34233b226e.tar yuzu-9cdc576f6055cbb308551f09e3566b34233b226e.tar.gz yuzu-9cdc576f6055cbb308551f09e3566b34233b226e.tar.bz2 yuzu-9cdc576f6055cbb308551f09e3566b34233b226e.tar.lz yuzu-9cdc576f6055cbb308551f09e3566b34233b226e.tar.xz yuzu-9cdc576f6055cbb308551f09e3566b34233b226e.tar.zst yuzu-9cdc576f6055cbb308551f09e3566b34233b226e.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/renderer_opengl/utils.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/utils.cpp b/src/video_core/renderer_opengl/utils.cpp index 22eefa1d7..c504a2c1a 100644 --- a/src/video_core/renderer_opengl/utils.cpp +++ b/src/video_core/renderer_opengl/utils.cpp @@ -13,6 +13,37 @@ namespace OpenGL { +VertexArrayPushBuffer::VertexArrayPushBuffer() = default; + +VertexArrayPushBuffer::~VertexArrayPushBuffer() = default; + +void VertexArrayPushBuffer::Setup(GLuint vao_) { + vao = vao_; + index_buffer = nullptr; + vertex_buffers.clear(); +} + +void VertexArrayPushBuffer::SetIndexBuffer(const GLuint* buffer) { + index_buffer = buffer; +} + +void VertexArrayPushBuffer::SetVertexBuffer(GLuint binding_index, const GLuint* buffer, + GLintptr offset, GLsizei stride) { + vertex_buffers.push_back(Entry{binding_index, buffer, offset, stride}); +} + +void VertexArrayPushBuffer::Bind() { + if (index_buffer) { + glVertexArrayElementBuffer(vao, *index_buffer); + } + + // TODO(Rodrigo): Find a way to ARB_multi_bind this + for (const auto& entry : vertex_buffers) { + glVertexArrayVertexBuffer(vao, entry.binding_index, *entry.buffer, entry.offset, + entry.stride); + } +} + BindBuffersRangePushBuffer::BindBuffersRangePushBuffer(GLenum target) : target{target} {} BindBuffersRangePushBuffer::~BindBuffersRangePushBuffer() = default; |