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。

最新更新