summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_opengl/utils.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-06-20 08:44:06 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-07-06 05:37:55 +0200
commit9cdc576f6055cbb308551f09e3566b34233b226e (patch)
tree7106c6ef615e0771a070afc3180d30cade558e74 /src/video_core/renderer_opengl/utils.cpp
parentgl_buffer_cache: Implement with generic buffer cache (diff)
downloadyuzu-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 'src/video_core/renderer_opengl/utils.cpp')
-rw-r--r--src/video_core/renderer_opengl/utils.cpp31
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;