我正在评估是否可以调整我的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);

}

但没有进一步解释为什么它需要2个UI通行证 .

任何人都可以对此有所了解吗?