@ -484,8 +484,13 @@ void RasterizerOpenGL::DrawArrays() {
GLintptr index_buffer_offset = 0 ;
if ( is_indexed ) {
MICROPROFILE_SCOPE ( OpenGL_Index ) ;
index_buffer_offset =
buffer_cache . UploadMemory ( regs . index_array . StartAddress ( ) , index_buffer_size ) ;
// Adjust the index buffer offset so it points to the first desired index.
auto index_start = regs . index_array . StartAddress ( ) ;
index_start + = static_cast < size_t > ( regs . index_array . first ) *
static_cast < size_t > ( regs . index_array . FormatSizeInBytes ( ) ) ;
index_buffer_offset = buffer_cache . UploadMemory ( index_start , index_buffer_size ) ;
}
SetupShaders ( ) ;
@ -499,10 +504,6 @@ void RasterizerOpenGL::DrawArrays() {
if ( is_indexed ) {
const GLint base_vertex { static_cast < GLint > ( regs . vb_element_base ) } ;
// Adjust the index buffer offset so it points to the first desired index.
index_buffer_offset + = static_cast < GLintptr > ( regs . index_array . first ) *
static_cast < GLintptr > ( regs . index_array . FormatSizeInBytes ( ) ) ;
if ( gpu . state . current_instance > 0 ) {
glDrawElementsInstancedBaseVertexBaseInstance (
primitive_mode , regs . index_array . count ,