|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|