summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/VertexManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/VideoBackends/OGL/VertexManager.cpp')
-rw-r--r--Source/Core/VideoBackends/OGL/VertexManager.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/Core/VideoBackends/OGL/VertexManager.cpp b/Source/Core/VideoBackends/OGL/VertexManager.cpp
index fd005e4860..f98c72b1ad 100644
--- a/Source/Core/VideoBackends/OGL/VertexManager.cpp
+++ b/Source/Core/VideoBackends/OGL/VertexManager.cpp
@@ -61,6 +61,16 @@ void VertexManager::DestroyDeviceObjects()
s_indexBuffer.reset();
}
+StreamBuffer* VertexManager::GetVertexBuffer() const
+{
+ return s_vertexBuffer.get();
+}
+
+OGL::StreamBuffer* VertexManager::GetIndexBuffer() const
+{
+ return s_indexBuffer.get();
+}
+
GLuint VertexManager::GetVertexBufferHandle() const
{
return m_vertex_buffers;
@@ -95,6 +105,11 @@ void VertexManager::ResetBuffer(u32 stride)
}
else
{
+ // The index buffer is part of the VAO state, therefore we need to bind it first.
+ const GLVertexFormat* vertex_format =
+ static_cast<GLVertexFormat*>(VertexLoaderManager::GetCurrentVertexFormat());
+ ProgramShaderCache::BindVertexFormat(vertex_format);
+
auto buffer = s_vertexBuffer->Map(MAXVBUFFERSIZE, stride);
m_cur_buffer_pointer = m_base_buffer_pointer = buffer.first;
m_end_buffer_pointer = buffer.first + MAXVBUFFERSIZE;