ImGui 多重采样

Posted

技术标签:

【中文标题】ImGui 多重采样【英文标题】:ImGui multisampling 【发布时间】:2021-02-08 15:51:32 【问题描述】:

我使用多重采样将我的场景渲染到 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绘图时启用(文本模糊)。

【问题讨论】:

【参考方案1】:

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

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

There's also an open issue on the ImGui repo 关于处理 AA 和字体的问题,尽管现在似乎“搁置”了。

【讨论】:

以上是关于ImGui 多重采样的主要内容,如果未能解决你的问题,请参考以下文章

Python常用的几种去重方法

如何从 OpenGL 中的帧缓冲区纹理中采样像素?

SDL/opengl 多重采样不起作用

在具有多重采样的 QGLFramebufferObject 中使用 sRGB 颜色

多重采样背景不显示

OpenGL4 多重采样抗锯齿和渲染到纹理