|
|
|
@ -63,15 +63,15 @@ static void ImImpl_RenderDrawLists(ImDrawList** const cmd_lists, int cmd_lists_c |
|
|
|
|
for (int n = 0; n < cmd_lists_count; n++) |
|
|
|
|
{ |
|
|
|
|
const ImDrawList* cmd_list = cmd_lists[n]; |
|
|
|
|
const unsigned char* vtx_buffer = (const unsigned char*)cmd_list->vtx_buffer.begin(); |
|
|
|
|
const unsigned char* vtx_buffer = (const unsigned char*)&cmd_list->vtx_buffer.front(); |
|
|
|
|
glVertexPointer(2, GL_FLOAT, sizeof(ImDrawVert), (void*)(vtx_buffer + offsetof(ImDrawVert, pos))); |
|
|
|
|
glTexCoordPointer(2, GL_FLOAT, sizeof(ImDrawVert), (void*)(vtx_buffer + offsetof(ImDrawVert, uv))); |
|
|
|
|
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(ImDrawVert), (void*)(vtx_buffer + offsetof(ImDrawVert, col))); |
|
|
|
|
|
|
|
|
|
int vtx_offset = 0; |
|
|
|
|
const ImDrawCmd* pcmd_end = cmd_list->commands.end(); |
|
|
|
|
for (const ImDrawCmd* pcmd = cmd_list->commands.begin(); pcmd != pcmd_end; pcmd++) |
|
|
|
|
for (size_t cmd_i = 0; cmd_i < cmd_list->commands.size(); cmd_i++) |
|
|
|
|
{ |
|
|
|
|
const ImDrawCmd* pcmd = &cmd_list->commands[cmd_i]; |
|
|
|
|
glScissor((int)pcmd->clip_rect.x, (int)(height - pcmd->clip_rect.w), (int)(pcmd->clip_rect.z - pcmd->clip_rect.x), (int)(pcmd->clip_rect.w - pcmd->clip_rect.y)); |
|
|
|
|
glDrawArrays(GL_TRIANGLES, vtx_offset, pcmd->vtx_count); |
|
|
|
|
vtx_offset += pcmd->vtx_count; |
|
|
|
|