|
@@ -21,6 +21,7 @@
|
|
|
// Calling the function is MANDATORY, otherwise the ImGui will not upload neither the vertex nor the index buffer for the GPU. See imgui_impl_sdlgpu3.cpp for more info.
|
|
|
|
|
|
// CHANGELOG
|
|
|
+// 2025-04-28: Added support for special ImDrawCallback_ResetRenderState callback to reset render state.
|
|
|
// 2025-03-30: Made ImGui_ImplSDLGPU3_PrepareDrawData() reuse GPU Transfer Buffers which were unusually slow to recreate every frame. Much faster now.
|
|
|
// 2025-03-21: Fixed typo in function name Imgui_ImplSDLGPU3_PrepareDrawData() -> ImGui_ImplSDLGPU3_PrepareDrawData().
|
|
|
// 2025-01-16: Renamed ImGui_ImplSDLGPU3_InitInfo::GpuDevice to Device.
|
|
@@ -232,7 +233,12 @@ void ImGui_ImplSDLGPU3_RenderDrawData(ImDrawData* draw_data, SDL_GPUCommandBuffe
|
|
|
const ImDrawCmd* pcmd = &draw_list->CmdBuffer[cmd_i];
|
|
|
if (pcmd->UserCallback != nullptr)
|
|
|
{
|
|
|
- pcmd->UserCallback(draw_list, pcmd);
|
|
|
+ // User callback, registered via ImDrawList::AddCallback()
|
|
|
+ // (ImDrawCallback_ResetRenderState is a special callback value used by the user to request the renderer to reset render state.)
|
|
|
+ if (pcmd->UserCallback == ImDrawCallback_ResetRenderState)
|
|
|
+ ImGui_ImplSDLGPU3_SetupRenderState(draw_data, pipeline, command_buffer, render_pass, fd, fb_width, fb_height);
|
|
|
+ else
|
|
|
+ pcmd->UserCallback(draw_list, pcmd);
|
|
|
}
|
|
|
else
|
|
|
{
|