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:
omar
2017-11-14 22:40:57 +01:00
parent 0858c3d7cb
commit 6001d9c7a4
2 changed files with 14 additions and 8 deletions

View File

@ -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.