From 0676efd37f2b965a051c137887e223b7971e89e2 Mon Sep 17 00:00:00 2001 From: ocornut Date: Sun, 5 Jul 2015 22:09:55 -0600 Subject: [PATCH] AA branch: added ImDrawData::DeIndexAllBuffers() helper (#254) --- imgui.cpp | 23 +++++++++++++++++++++++ imgui.h | 3 +++ 2 files changed, 26 insertions(+) diff --git a/imgui.cpp b/imgui.cpp index 8f038008..35c3d7eb 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -9503,6 +9503,29 @@ void ImDrawList::AddImage(ImTextureID user_texture_id, const ImVec2& a, const Im PopTextureID(); } +//----------------------------------------------------------------------------- +// ImDrawData +//----------------------------------------------------------------------------- + +// For backward compatibility: convert all buffers from indexed to de-indexed, in case you cannot render indexed. Note: this is slow and most likely a waste of resources. Always prefer indexed rendering! +void ImDrawData::DeIndexAllBuffers() +{ + ImVector new_vtx_buffer; + total_vtx_count = total_idx_count = 0; + for (int i = 0; i < cmd_lists_count; i++) + { + ImDrawList* cmd_list = cmd_lists[i]; + if (cmd_list->idx_buffer.empty()) + continue; + new_vtx_buffer.resize(cmd_list->idx_buffer.size()); + for (size_t i = 0; i < cmd_list->idx_buffer.size(); i++) + new_vtx_buffer[i] = cmd_list->vtx_buffer[cmd_list->idx_buffer[i]]; + cmd_list->vtx_buffer.swap(new_vtx_buffer); + cmd_list->idx_buffer.resize(0); + total_vtx_count += (int)cmd_list->vtx_buffer.size(); + } +} + //----------------------------------------------------------------------------- // ImFontAtlias //----------------------------------------------------------------------------- diff --git a/imgui.h b/imgui.h index 3e6150a5..e2250091 100644 --- a/imgui.h +++ b/imgui.h @@ -1095,6 +1095,9 @@ struct ImDrawData int cmd_lists_count; int total_vtx_count; // For convenience, sum of all cmd_lists vtx_buffer.size() int total_idx_count; // For convenience, sum of all cmd_lists idx_buffer.size() + + // Functions + void DeIndexAllBuffers(); // For backward compatibility: convert all buffers from indexed to de-indexed, in case you cannot render indexed. Note: this is slow and most likely a waste of resources. Always prefer indexed rendering! }; // Load and rasterize multiple TTF fonts into a same texture.