MCPcopy Create free account
hub / github.com/AlexandreRouma/SDRPlusPlus / Render

Method Render

core/src/imgui/imgui.cpp:4462–4520  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4460}
4461
4462void ImGui::Render()
4463{
4464 ImGuiContext& g = *GImGui;
4465 IM_ASSERT(g.Initialized);
4466
4467 if (g.FrameCountEnded != g.FrameCount)
4468 EndFrame();
4469 g.FrameCountRendered = g.FrameCount;
4470 g.IO.MetricsRenderWindows = 0;
4471
4472 CallContextHooks(&g, ImGuiContextHookType_RenderPre);
4473
4474 // Add background ImDrawList (for each active viewport)
4475 for (int n = 0; n != g.Viewports.Size; n++)
4476 {
4477 ImGuiViewportP* viewport = g.Viewports[n];
4478 viewport->DrawDataBuilder.Clear();
4479 if (viewport->DrawLists[0] != NULL)
4480 AddDrawListToDrawData(&viewport->DrawDataBuilder.Layers[0], GetBackgroundDrawList(viewport));
4481 }
4482
4483 // Add ImDrawList to render
4484 ImGuiWindow* windows_to_render_top_most[2];
4485 windows_to_render_top_most[0] = (g.NavWindowingTarget && !(g.NavWindowingTarget->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus)) ? g.NavWindowingTarget->RootWindow : NULL;
4486 windows_to_render_top_most[1] = (g.NavWindowingTarget ? g.NavWindowingListWindow : NULL);
4487 for (int n = 0; n != g.Windows.Size; n++)
4488 {
4489 ImGuiWindow* window = g.Windows[n];
4490 IM_MSVC_WARNING_SUPPRESS(6011); // Static Analysis false positive "warning C6011: Dereferencing NULL pointer 'window'"
4491 if (IsWindowActiveAndVisible(window) && (window->Flags & ImGuiWindowFlags_ChildWindow) == 0 && window != windows_to_render_top_most[0] && window != windows_to_render_top_most[1])
4492 AddRootWindowToDrawData(window);
4493 }
4494 for (int n = 0; n < IM_ARRAYSIZE(windows_to_render_top_most); n++)
4495 if (windows_to_render_top_most[n] && IsWindowActiveAndVisible(windows_to_render_top_most[n])) // NavWindowingTarget is always temporarily displayed as the top-most window
4496 AddRootWindowToDrawData(windows_to_render_top_most[n]);
4497
4498 // Setup ImDrawData structures for end-user
4499 g.IO.MetricsRenderVertices = g.IO.MetricsRenderIndices = 0;
4500 for (int n = 0; n < g.Viewports.Size; n++)
4501 {
4502 ImGuiViewportP* viewport = g.Viewports[n];
4503 viewport->DrawDataBuilder.FlattenIntoSingleLayer();
4504
4505 // Draw software mouse cursor if requested by io.MouseDrawCursor flag
4506 if (g.IO.MouseDrawCursor)
4507 RenderMouseCursor(GetForegroundDrawList(viewport), g.IO.MousePos, g.Style.MouseCursorScale, g.MouseCursor, IM_COL32_WHITE, IM_COL32_BLACK, IM_COL32(0, 0, 0, 48));
4508
4509 // Add foreground ImDrawList (for each active viewport)
4510 if (viewport->DrawLists[1] != NULL)
4511 AddDrawListToDrawData(&viewport->DrawDataBuilder.Layers[0], GetForegroundDrawList(viewport));
4512
4513 SetupViewportDrawData(viewport, &viewport->DrawDataBuilder.Layers[0]);
4514 ImDrawData* draw_data = &viewport->DrawDataP;
4515 g.IO.MetricsRenderVertices += draw_data->TotalVtxCount;
4516 g.IO.MetricsRenderIndices += draw_data->TotalIdxCount;
4517 }
4518
4519 CallContextHooks(&g, ImGuiContextHookType_RenderPost);

Callers

nothing calls this directly

Calls 7

AddDrawListToDrawDataFunction · 0.85
IsWindowActiveAndVisibleFunction · 0.85
AddRootWindowToDrawDataFunction · 0.85
GetForegroundDrawListFunction · 0.85
SetupViewportDrawDataFunction · 0.85
ClearMethod · 0.45

Tested by

no test coverage detected