ImGui,用SDL2 Renderer,三个独立的NewFrame函数有什么意义?

问题描述 投票:0回答:1

我正在尝试使用 SDL2 后端和软件渲染器设置 ImGui。在提供的示例 (

./examples/example_sdl2_sdlrenderer2/main.cpp
) 中,每个渲染周期开始时都有这三个调用:

        // Start the Dear ImGui frame
        ImGui_ImplSDLRenderer2_NewFrame();
        ImGui_ImplSDL2_NewFrame();
        ImGui::NewFrame();

如果我注释掉其中任何一个调用,程序就会崩溃。如果我重新排序,某些订单会崩溃,而其他订单则运行良好。那么为什么这三个调用是分开的呢?它们之间有什么区别,为什么我需要全部三个?

我预计至少会有一些关于这个问题的文档(具体来说,关于我应该以什么顺序调用它们,这取决于哪个等等),但没有任何关于它们的信息。

ImGui::NewFrame()
有通用文档页面,但好像其他两个根本不存在。

其他问题: 是否存在仅使用其中一两个才有意义的情况? 其中一种顺序是否比另一种更可取,至少有时如此?

c++ sdl-2 imgui
1个回答
0
投票

ImGui 及其后端是模块化的。无论使用什么后端,都会调用

ImGui::NewFrame();

ImGui_ImplSDL2_NewFrame();
适用于SDL2后端,但SDL2支持多种不同的渲染方法(OpenGL、Vulkan、内置渲染器)。

ImGui_ImplSDLRenderer2_NewFrame();
用于 SDL2 的内置渲染器。

© www.soinside.com 2019 - 2024. All rights reserved.