mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-10-31 13:11:05 +01:00 
			
		
		
		
	Columns: Clipping columns borders on Y axis on CPU because some GPU drivers appears to be unhappy with triangle spanning large regions (not sure why tbh). (#125)
Demo: Columns: Adding a billion of extra lines and using clipper.
This commit is contained in:
		| @@ -10511,9 +10511,10 @@ void ImGui::EndColumns() | ||||
|             } | ||||
|  | ||||
|             // Draw column | ||||
|             // We clip the Y boundaries CPU side because very long triangles are mishandled by some GPU drivers. | ||||
|             const ImU32 col = GetColorU32(held ? ImGuiCol_SeparatorActive : hovered ? ImGuiCol_SeparatorHovered : ImGuiCol_Separator); | ||||
|             const float xi = (float)(int)x; | ||||
|             window->DrawList->AddLine(ImVec2(xi, y1 + 1.0f), ImVec2(xi, y2), col); | ||||
|             window->DrawList->AddLine(ImVec2(xi, ImMax(y1 + 1.0f, window->ClipRect.Min.y)), ImVec2(xi, ImMin(y2, window->ClipRect.Max.y)), col); | ||||
|         } | ||||
|  | ||||
|         // Apply dragging after drawing the column lines, so our rendered lines are in sync with how items were displayed during the frame. | ||||
|   | ||||
| @@ -1652,14 +1652,19 @@ void ImGui::ShowTestWindow(bool* p_open) | ||||
|         if (ImGui::TreeNode("Horizontal Scrolling")) | ||||
|         { | ||||
|             ImGui::SetNextWindowContentWidth(1500); | ||||
|             ImGui::BeginChild("##scrollingregion", ImVec2(0, 120), false, ImGuiWindowFlags_HorizontalScrollbar); | ||||
|             ImGui::BeginChild("##ScrollingRegion", ImVec2(0, ImGui::GetFontSize() * 20), false, ImGuiWindowFlags_HorizontalScrollbar); | ||||
|             ImGui::Columns(10); | ||||
|             for (int i = 0; i < 20; i++) | ||||
|                 for (int j = 0; j < 10; j++) | ||||
|                 { | ||||
|                     ImGui::Text("Line %d Column %d...", i, j); | ||||
|                     ImGui::NextColumn(); | ||||
|                 } | ||||
|             int ITEMS_COUNT = 2000; | ||||
|             ImGuiListClipper clipper(ITEMS_COUNT);  // Also demonstrate using the clipper for large list | ||||
|             while (clipper.Step()) | ||||
|             { | ||||
|                 for (int i = clipper.DisplayStart; i < clipper.DisplayEnd; i++) | ||||
|                     for (int j = 0; j < 10; j++) | ||||
|                     { | ||||
|                         ImGui::Text("Line %d Column %d...", i, j); | ||||
|                         ImGui::NextColumn(); | ||||
|                     } | ||||
|             } | ||||
|             ImGui::Columns(1); | ||||
|             ImGui::EndChild(); | ||||
|             ImGui::TreePop(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user