mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 05:01:05 +01:00 
			
		
		
		
	Metrics: Displaying all draw lists of a window (if it uses layer 0 and has already been appended to earlier in the frame).
This commit is contained in:
		| @@ -13980,15 +13980,15 @@ void ImGui::ShowMetricsWindow(bool* p_open) | |||||||
|             for (int i = 0; i < g.Viewports.Size; i++) |             for (int i = 0; i < g.Viewports.Size; i++) | ||||||
|             { |             { | ||||||
|                 ImGuiViewport* viewport = g.Viewports[i]; |                 ImGuiViewport* viewport = g.Viewports[i]; | ||||||
|                 ImDrawDataBuilder* draw_data = &viewport->DrawDataBuilder; // Because we avoid create an extra list when there's only one viewport |  | ||||||
|                 ImGui::SetNextTreeNodeOpen(true, ImGuiCond_Once); |                 ImGui::SetNextTreeNodeOpen(true, ImGuiCond_Once); | ||||||
|                 if (ImGui::TreeNode((void*)(intptr_t)viewport->ID, "Viewport #%d, ID: 0x%08X, DrawLists: %d, Size: (%.0f,%.0f)", i, viewport->ID, draw_data->Layers[0].Size, viewport->Size.x, viewport->Size.y)) |                 if (ImGui::TreeNode((void*)(intptr_t)viewport->ID, "Viewport #%d, ID: 0x%08X, DrawLists: %d, Size: (%.0f,%.0f)", i, viewport->ID, viewport->DrawDataBuilder.GetDrawListCount(), viewport->Size.x, viewport->Size.y)) | ||||||
|                 { |                 { | ||||||
|                     ImGui::BulletText("Pos: (%.0f,%.0f)", viewport->Pos.x, viewport->Pos.y); |                     ImGui::BulletText("Pos: (%.0f,%.0f)", viewport->Pos.x, viewport->Pos.y); | ||||||
|                     ImGui::BulletText("Flags: 0x%04X", viewport->Flags); |                     ImGui::BulletText("Flags: 0x%04X", viewport->Flags); | ||||||
|                     ImGui::BulletText("PlatformOsDesktopPos: (%.0f,%.0f); DpiScale: %.0f%%", viewport->PlatformOsDesktopPos.x, viewport->PlatformOsDesktopPos.y, viewport->DpiScale * 100.0f); |                     ImGui::BulletText("PlatformOsDesktopPos: (%.0f,%.0f); DpiScale: %.0f%%", viewport->PlatformOsDesktopPos.x, viewport->PlatformOsDesktopPos.y, viewport->DpiScale * 100.0f); | ||||||
|                     for (int draw_list_i = 0; draw_list_i < viewport->DrawDataBuilder.Layers[0].Size; draw_list_i++) |                     for (int layer_i = 0; layer_i < IM_ARRAYSIZE(viewport->DrawDataBuilder.Layers); layer_i++) | ||||||
|                         Funcs::NodeDrawList(NULL, viewport->DrawDataBuilder.Layers[0][draw_list_i], "DrawList"); |                         for (int draw_list_i = 0; draw_list_i < viewport->DrawDataBuilder.Layers[layer_i].Size; draw_list_i++) | ||||||
|  |                             Funcs::NodeDrawList(NULL, viewport->DrawDataBuilder.Layers[layer_i][draw_list_i], "DrawList"); | ||||||
|                     ImGui::TreePop(); |                     ImGui::TreePop(); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|   | |||||||
| @@ -502,6 +502,7 @@ struct ImDrawDataBuilder | |||||||
|  |  | ||||||
|     void Clear()            { for (int n = 0; n < IM_ARRAYSIZE(Layers); n++) Layers[n].resize(0); } |     void Clear()            { for (int n = 0; n < IM_ARRAYSIZE(Layers); n++) Layers[n].resize(0); } | ||||||
|     void ClearFreeMemory()  { for (int n = 0; n < IM_ARRAYSIZE(Layers); n++) Layers[n].clear(); } |     void ClearFreeMemory()  { for (int n = 0; n < IM_ARRAYSIZE(Layers); n++) Layers[n].clear(); } | ||||||
|  |     int  GetDrawListCount() const { int count = 0; for (int n = 0; n < IM_ARRAYSIZE(Layers); n++) count += Layers[n].Size; return count; } | ||||||
|     IMGUI_API void FlattenIntoSingleLayer(); |     IMGUI_API void FlattenIntoSingleLayer(); | ||||||
| }; | }; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user