在输入事件后更新Nuklear UI时,为什么需要更新两次?

时间:2018-12-08 21:54:14

标签: imgui

我正在评估是否可以使我的Windows OpenGL应用程序适应使用Nuklear imgui库。

我将以“阻止”样式使用它-也就是说,仅基于用户输入事件来更新和重绘UI。

在文档中,讨论此主题时,它表示以下内容:

  

如果您实际上只更新输入,请确保更新两个UI   对每个帧进行计时,并在第一次通过后立即调用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);

}

但没有进一步解释为什么它需要两次UI传递。

有人能对此有所启发吗?

0 个答案:

没有答案