diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-03-31 20:32:28 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-03-31 20:43:22 +0300 |
commit | c77870fc78f594411c9831ee77eba2167a702fd7 (patch) | |
tree | 8ca99ec3f8745f2b3c4cd1f8e85df8e550ae5534 /source/blender/editors/interface/interface.c | |
parent | 4dc0c923fb7f5c9c6f36ce0a63c1d19f241befa2 (diff) |
UI: Perf: Batch icons drawcalls together.
For this we use a new shader that gets it's data from a uniform array.
Vertex shader position the vertices using these data.
Using glUniform is way faster than using imm for that matter.
Like BLF rendering, UI icons are always (as far as I know) non occluded and
displayed above everything else. They also does not overlap with texts so
they can be batched at the same time.
Diffstat (limited to 'source/blender/editors/interface/interface.c')
-rw-r--r-- | source/blender/editors/interface/interface.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index 0050340d842..0c786874180 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -64,6 +64,7 @@ #include "BLT_translation.h" #include "UI_interface.h" +#include "UI_interface_icons.h" #include "IMB_imbuf.h" @@ -1427,6 +1428,7 @@ void UI_block_draw(const bContext *C, uiBlock *block) ui_draw_aligned_panel(&style, block, &rect, UI_panel_category_is_visible(ar)); BLF_batch_draw_begin(); + UI_icon_draw_cache_begin(); /* widgets */ for (but = block->buttons.first; but; but = but->next) { @@ -1440,6 +1442,7 @@ void UI_block_draw(const bContext *C, uiBlock *block) } } + UI_icon_draw_cache_end(); BLF_batch_draw_end(); /* restore matrix */ |