@ -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 )
{
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
ImRect clip_rect = draw_cmd - > ClipRect ;
ImRect vtxs_rect ( FLT_MAX , FLT_MAX , - FLT_MAX , - FLT_MAX ) ;
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.
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 ] ;
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 ) ) ;