基于颜色(不是纹理)的抗锯齿

时间:2015-08-30 10:32:47

标签: java opengl glsl lwjgl antialiasing

我正在为我的OpenGL程序寻找一种抗锯齿算法(所以我搜索了一个很好的着色器)。问题是,所有着色器都希望对纹理做一些事情,但我不使用纹理,只使用颜色。我大部分时间都看过FXAA,那么是否有一种抗锯齿算法可以使用颜色?我的游戏,这看起来像是我的世界一样块状,但只适用于不同大小的颜色和立方体。

我希望有人可以帮助我。

问候

1 个答案:

答案 0 :(得分:0)

抗锯齿与纹理或颜色没有任何关系。

适当的抗锯齿是关于采样率,虽然高技术性可以被认为是做额外的工作,以便在一些无法直接查找的值上进行更好的教育猜测(例如像素只有部分由三角形覆盖。)

多重采样抗锯齿(MSAA)可以很好地为您工作,它只会对多边形边缘进行反锯齿,并且不会对多边形内部的纹理锯齿做任何处理。由于您不使用纹理,因此无需担心多边形内的锯齿。

顺便提一下,FXAA不是正确的抗锯齿。 FXAA基本上是一个基于着色器的边缘检测和模糊图像处理过滤器。 FXAA将使用锐边来模糊场景的任何部分,无论是多边形边缘还是由于映射纹理而产生的边缘。它不加思索地模糊它认为是混淆边缘的任何东西并经常出错,导致纹理模糊。

要使用MSAA,您需要:

  1. 具有至少2个样本的帧缓冲
  2. 启用多重采样光栅化
  3. 满足(1)将取决于您用于创建窗口的内容(在本例中为LWJGL)。大多数框架允许您选择样本计数作为创建时的参数之一。

    Framebuffer对象也可用于执行此操作而不会弄乱窗口的参数,但它们比本讨论需要的更复杂。

    (2)就像调用glEnable (GL_MULTISAMPLE)一样简单。