mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
Metrics: Fixed a crash when inspecting the individual draw command of a foreground drawlist.
This commit is contained in:
parent
7e9e1ff1c2
commit
86afe966d3
@ -89,6 +89,7 @@ Other Changes:
|
|||||||
- Demo: Fixed requirement in 1.83 to link with imgui_demo.cpp if IMGUI_DISABLE_METRICS_WINDOW is not set. (#4171)
|
- Demo: Fixed requirement in 1.83 to link with imgui_demo.cpp if IMGUI_DISABLE_METRICS_WINDOW is not set. (#4171)
|
||||||
Normally the right way to disable compiling the demo is to set IMGUI_DISABLE_DEMO_WINDOWS, but we want to avoid
|
Normally the right way to disable compiling the demo is to set IMGUI_DISABLE_DEMO_WINDOWS, but we want to avoid
|
||||||
implying that the file is required.
|
implying that the file is required.
|
||||||
|
- Metrics: Fixed a crash when inspecting the individual draw command of a foreground drawlist. [@rokups]
|
||||||
- Backends: Reorganized most backends (Win32, SDL, GLFW, OpenGL2/3, DX9/10/11/12, Vulkan, Allegro) to pull their
|
- Backends: Reorganized most backends (Win32, SDL, GLFW, OpenGL2/3, DX9/10/11/12, Vulkan, Allegro) to pull their
|
||||||
data from a single structure stored inside the main Dear ImGui context. This facilitate/allow usage of standard
|
data from a single structure stored inside the main Dear ImGui context. This facilitate/allow usage of standard
|
||||||
backends with multiple-contexts BUT is only partially tested and not well supported. It is generally advised to
|
backends with multiple-contexts BUT is only partially tested and not well supported. It is generally advised to
|
||||||
|
@ -11480,16 +11480,17 @@ void ImGui::DebugNodeDrawList(ImGuiWindow* window, const ImDrawList* draw_list,
|
|||||||
void ImGui::DebugNodeDrawCmdShowMeshAndBoundingBox(ImDrawList* out_draw_list, const ImDrawList* draw_list, const ImDrawCmd* draw_cmd, bool show_mesh, bool show_aabb)
|
void ImGui::DebugNodeDrawCmdShowMeshAndBoundingBox(ImDrawList* out_draw_list, const ImDrawList* draw_list, const ImDrawCmd* draw_cmd, bool show_mesh, bool show_aabb)
|
||||||
{
|
{
|
||||||
IM_ASSERT(show_mesh || show_aabb);
|
IM_ASSERT(show_mesh || show_aabb);
|
||||||
ImDrawIdx* idx_buffer = (draw_list->IdxBuffer.Size > 0) ? draw_list->IdxBuffer.Data : NULL;
|
|
||||||
ImDrawVert* vtx_buffer = draw_list->VtxBuffer.Data + draw_cmd->VtxOffset;
|
|
||||||
|
|
||||||
// Draw wire-frame version of all triangles
|
// Draw wire-frame version of all triangles
|
||||||
ImRect clip_rect = draw_cmd->ClipRect;
|
ImRect clip_rect = draw_cmd->ClipRect;
|
||||||
ImRect vtxs_rect(FLT_MAX, FLT_MAX, -FLT_MAX, -FLT_MAX);
|
ImRect vtxs_rect(FLT_MAX, FLT_MAX, -FLT_MAX, -FLT_MAX);
|
||||||
ImDrawListFlags backup_flags = out_draw_list->Flags;
|
ImDrawListFlags backup_flags = out_draw_list->Flags;
|
||||||
out_draw_list->Flags &= ~ImDrawListFlags_AntiAliasedLines; // Disable AA on triangle outlines is more readable for very large and thin triangles.
|
out_draw_list->Flags &= ~ImDrawListFlags_AntiAliasedLines; // Disable AA on triangle outlines is more readable for very large and thin triangles.
|
||||||
for (unsigned int idx_n = draw_cmd->IdxOffset; idx_n < draw_cmd->IdxOffset + draw_cmd->ElemCount; )
|
for (unsigned int idx_n = draw_cmd->IdxOffset, idx_end = draw_cmd->IdxOffset + draw_cmd->ElemCount; idx_n < idx_end; )
|
||||||
{
|
{
|
||||||
|
ImDrawIdx* idx_buffer = (draw_list->IdxBuffer.Size > 0) ? draw_list->IdxBuffer.Data : NULL; // We don't hold on those pointers past iterations as ->AddPolyline() may invalidate them if out_draw_list==draw_list
|
||||||
|
ImDrawVert* vtx_buffer = draw_list->VtxBuffer.Data + draw_cmd->VtxOffset;
|
||||||
|
|
||||||
ImVec2 triangle[3];
|
ImVec2 triangle[3];
|
||||||
for (int n = 0; n < 3; n++, idx_n++)
|
for (int n = 0; n < 3; n++, idx_n++)
|
||||||
vtxs_rect.Add((triangle[n] = vtx_buffer[idx_buffer ? idx_buffer[idx_n] : idx_n].pos));
|
vtxs_rect.Add((triangle[n] = vtx_buffer[idx_buffer ? idx_buffer[idx_n] : idx_n].pos));
|
||||||
|
Loading…
Reference in New Issue
Block a user