我有一个透明的 OpenGL 纹理,上面有一些由 OpenGL 绘制的简单形状: 圆、多边形、线。它们是在没有抗锯齿、多重采样等的情况下绘制的。因此,它们具有锯齿状的边界。
我无权访问纹理创建过程,因此无法启用多重采样 . 有没有办法在绘制完成后使这些平滑?
最佳答案
有基于图像的抗锯齿过滤器,例如 FXAA和 MLAA 将在这种情况下工作。我不太愿意称它们为抗锯齿,因为它们并没有真正避免锯齿,它们只是在事后隐藏它。它们更类似于智能模糊滤镜。
我从您的其他问题中得知您不想使用 FBO,因此我相信您使用的是 OpenGL 2.1 或更旧的代码库。 FXAA 可以在 GLSL 1.20 中实现,但在 1.30 (GL 3.0) 中效果更好。我不知道的一件事是在包含透明度的图像上使用 FXAA,它期望在 alpha channel (或 sRGB,这不是 GL 2.1 功能)中编码亮度。
您可能不希望直接将 FXAA 应用到您的纹理,而是需要绘制到 PBuffer 中并在混合输入纹理后应用 FXAA。
关于c++ - 创建纹理后,OpenGL 抗锯齿形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28933196/