0

我使用多重采样将我的场景渲染到 FBO。我用作 ImGui::Image 内容的结果纹理。但是如何禁用 gui 的多重采样?我试过:

glDisable(GL_MULTISAMPLE);
ImGui_ImplOpenGL3_NewFrame();
ImGui_ImplSDL2_NewFrame(Game::getWindow());
ImGui::NewFrame();
//...
// Some gui elements
//...
ImGui::Render();
ImGui::UpdatePlatformWindows();
ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
glEnable(GL_MULTISAMPLE);

但这不起作用。MSAA 实际上在 gui 绘图时启用(文本模糊)。

4

1 回答 1

0

当涉及到窗口上下文时,您不能在创建窗口禁用 MSAA 。您需要重新创建窗口才能使其生效。

我不确定 FBO 是否需要同样的东西,但是,据我所知,glDisable(GL_MULTISAMPLE)在运行时调用只会清除一些AA 状态,并且您不能依赖它,因为它旨在重新创建窗口以进行更改MSAA,所以我猜它可能不会像您期望的那样影响您的 FBO。

ImGui repo 上还有一个关于处理 AA 和字体的未解决问题,尽管它现在似乎处于“搁置”状态。

于 2021-06-21T19:29:48.000 回答