Почему при обновлении пользовательского интерфейса Nuklear после событий ввода требуется обновление дважды?
Я оцениваю, могу ли я адаптировать свое приложение Windows OpenGL для использования библиотеки Nuklear imgui.
Я бы использовал его в стиле "блокировки", то есть только обновлять и перерисовывать пользовательский интерфейс, основываясь на событиях пользовательского ввода.
В документации говорится следующее при обсуждении этой темы:
Если вы на самом деле обновляете только входные данные, убедитесь, что обновляете пользовательский интерфейс два раза в каждом кадре, и вызывайте nk_clear сразу после первого прохода и рисуйте только во втором проходе.
и предоставляет следующий пример кода:
struct nk_context ctx;
nk_init_xxx(&ctx, ...);
while (1) {
// [...wait for input ]
// [...do two UI passes ...]
do_ui(...)
nk_clear(&ctx);
do_ui(...)
//
// draw
const struct nk_command *cmd = 0;
nk_foreach(cmd, &ctx) {
switch (cmd->type) {
case NK_COMMAND_LINE:
your_draw_line_function(...)
break;
case NK_COMMAND_RECT
your_draw_rect_function(...)
break;
case ...:
//[...]
}
nk_clear(&ctx);
}
nk_free(&ctx);
}
но нет дальнейшего объяснения того, почему для этого требуется 2 прохода пользовательского интерфейса.
Может кто-нибудь пролить некоторый свет на это?