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