Small simplification of access to GL Buffers

This commit is contained in:
korenkonder
2023-12-19 15:13:30 +03:00
parent 9385305f6b
commit b29fe7eac3
7 changed files with 55 additions and 144 deletions
+5 -24
View File
@@ -81,36 +81,17 @@ HOOK(void, FASTCALL, rob_chara_age_age_object__disp, 0x0000000140541D50,
rob_age_age_obj->obj_vert_buf.cycle_index();
GLuint buffer = rob_age_age_obj->obj_vert_buf.get_buffer();
size_t vtx_data;
if (GL_VERSION_4_5) {
vtx_data = (size_t)glMapNamedBuffer(buffer, GL_WRITE_ONLY);
if (!vtx_data) {
glUnmapNamedBuffer(buffer);
return;
}
}
else {
gl_state_bind_array_buffer(buffer);
vtx_data = (size_t)glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
if (!vtx_data) {
glUnmapBuffer(GL_ARRAY_BUFFER);
gl_state_bind_array_buffer(0);
return;
}
}
GLArrayBuffer buffer = rob_age_age_obj->obj_vert_buf.get_buffer();
size_t vtx_data = (size_t)buffer.MapMemory();
if (!vtx_data)
return;
size_t vertex_array_size = rob_age_age_obj->vertex_array_size;
for (int32_t i = 0; i < disp_count; i++)
memmove((void*)(vtx_data + vertex_array_size * i),
(void*)((size_t)rob_age_age_obj->vertex_data + vertex_array_size * v44[i].second), vertex_array_size);
if (GL_VERSION_4_5)
glUnmapNamedBuffer(buffer);
else {
glUnmapBuffer(GL_ARRAY_BUFFER);
gl_state_bind_array_buffer(0);
}
buffer.UnmapMemory();
rob_age_age_obj->mesh.num_vertex = disp_count * rob_age_age_obj->num_vertex;
rob_age_age_obj->sub_mesh.num_index = disp_count * rob_age_age_obj->num_index;