|
@ -157,16 +157,25 @@ void ImGui_ImplDX9_RenderDrawData(ImDrawData* draw_data) |
|
|
g_pd3dDevice->GetTransform(D3DTS_VIEW, &last_view); |
|
|
g_pd3dDevice->GetTransform(D3DTS_VIEW, &last_view); |
|
|
g_pd3dDevice->GetTransform(D3DTS_PROJECTION, &last_projection); |
|
|
g_pd3dDevice->GetTransform(D3DTS_PROJECTION, &last_projection); |
|
|
|
|
|
|
|
|
// Copy and convert all vertices into a single contiguous buffer, convert colors to DX9 default format.
|
|
|
// Allocate buffers
|
|
|
// FIXME-OPT: This is a minor waste of resource, the ideal is to use imconfig.h and
|
|
|
|
|
|
// 1) to avoid repacking colors: #define IMGUI_USE_BGRA_PACKED_COLOR
|
|
|
|
|
|
// 2) to avoid repacking vertices: #define IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT struct ImDrawVert { ImVec2 pos; float z; ImU32 col; ImVec2 uv; }
|
|
|
|
|
|
CUSTOMVERTEX* vtx_dst; |
|
|
CUSTOMVERTEX* vtx_dst; |
|
|
ImDrawIdx* idx_dst; |
|
|
ImDrawIdx* idx_dst; |
|
|
if (g_pVB->Lock(0, (UINT)(draw_data->TotalVtxCount * sizeof(CUSTOMVERTEX)), (void**)&vtx_dst, D3DLOCK_DISCARD) < 0) |
|
|
if (g_pVB->Lock(0, (UINT)(draw_data->TotalVtxCount * sizeof(CUSTOMVERTEX)), (void**)&vtx_dst, D3DLOCK_DISCARD) < 0) |
|
|
|
|
|
{ |
|
|
|
|
|
d3d9_state_block->Release(); |
|
|
return; |
|
|
return; |
|
|
|
|
|
} |
|
|
if (g_pIB->Lock(0, (UINT)(draw_data->TotalIdxCount * sizeof(ImDrawIdx)), (void**)&idx_dst, D3DLOCK_DISCARD) < 0) |
|
|
if (g_pIB->Lock(0, (UINT)(draw_data->TotalIdxCount * sizeof(ImDrawIdx)), (void**)&idx_dst, D3DLOCK_DISCARD) < 0) |
|
|
|
|
|
{ |
|
|
|
|
|
g_pVB->Unlock(); |
|
|
|
|
|
d3d9_state_block->Release(); |
|
|
return; |
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Copy and convert all vertices into a single contiguous buffer, convert colors to DX9 default format.
|
|
|
|
|
|
// FIXME-OPT: This is a minor waste of resource, the ideal is to use imconfig.h and
|
|
|
|
|
|
// 1) to avoid repacking colors: #define IMGUI_USE_BGRA_PACKED_COLOR
|
|
|
|
|
|
// 2) to avoid repacking vertices: #define IMGUI_OVERRIDE_DRAWVERT_STRUCT_LAYOUT struct ImDrawVert { ImVec2 pos; float z; ImU32 col; ImVec2 uv; }
|
|
|
for (int n = 0; n < draw_data->CmdListsCount; n++) |
|
|
for (int n = 0; n < draw_data->CmdListsCount; n++) |
|
|
{ |
|
|
{ |
|
|
const ImDrawList* cmd_list = draw_data->CmdLists[n]; |
|
|
const ImDrawList* cmd_list = draw_data->CmdLists[n]; |
|
|