MCPcopy Create free account
hub / github.com/VictorGordan/opengl-tutorials / Render

Method Render

ImGUI GLFW Tutorial/imgui/imgui.cpp:4461–4519  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected