gl_state_tracker: Track state of index buffers

This commit is contained in:
ReinUsesLisp
2019-12-31 18:16:58 -03:00
parent a42a6e1a2c
commit a5bfc0d045
4 changed files with 23 additions and 5 deletions

View File

@ -9,6 +9,7 @@
#include <glad/glad.h>
#include "common/common_types.h"
#include "video_core/renderer_opengl/gl_state_tracker.h"
#include "video_core/renderer_opengl/utils.h"
namespace OpenGL {
@ -20,7 +21,8 @@ struct VertexArrayPushBuffer::Entry {
GLsizei stride{};
};
VertexArrayPushBuffer::VertexArrayPushBuffer() = default;
VertexArrayPushBuffer::VertexArrayPushBuffer(StateTracker& state_tracker)
: state_tracker{state_tracker} {}
VertexArrayPushBuffer::~VertexArrayPushBuffer() = default;
@ -40,10 +42,9 @@ void VertexArrayPushBuffer::SetVertexBuffer(GLuint binding_index, const GLuint*
void VertexArrayPushBuffer::Bind() {
if (index_buffer) {
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, *index_buffer);
state_tracker.BindIndexBuffer(*index_buffer);
}
// TODO(Rodrigo): Find a way to ARB_multi_bind this
for (const auto& entry : vertex_buffers) {
glBindVertexBuffer(entry.binding_index, *entry.buffer, entry.offset, entry.stride);
}