基于颜色(不是纹理)的抗锯齿
Anti Aliasing based on colors (not textures)
我正在为我的 OpenGL 程序寻找一种抗锯齿算法(所以我寻找了一个好的着色器)。问题是,所有着色器都想对纹理做一些事情,但我不使用纹理,只使用颜色。我大部分时间都在看 FXAA,那么是否有一种只适用于颜色的抗锯齿算法?我的游戏,这是为了看起来像 minecraft 的块状,但只适用于不同大小的颜色和立方体。
希望有人能帮助我。
问候
抗锯齿与纹理或颜色没有特别的关系。
适当的抗锯齿是关于采样率的,虽然技术含量很高,但可以认为是做额外的工作,以便对无法直接查找的某些值进行更好的有根据的猜测(例如 仅部分被三角形覆盖的像素)。
多重采样抗锯齿 (MSAA) 将非常适合您,它只会消除多边形边缘的锯齿,而不会对多边形内部的纹理锯齿产生任何影响。由于您不使用纹理,因此无需担心多边形内部的锯齿。
顺便说一下,FXAA 不是适当的抗锯齿功能。 FXAA 基本上是一种基于着色器的边缘检测和模糊图像处理滤镜。 FXAA 将模糊场景中具有锐利边缘的任何部分,无论是多边形边缘还是由于贴图纹理而产生的边缘。它会不分青红皂白地模糊任何它认为是锯齿边缘的东西,而且经常弄错,导致纹理模糊。
要使用 MSAA,您需要:
- 具有至少 2 个样本的帧缓冲区
- 启用多重采样光栅化
满足 (1) 将取决于您用来创建 window 的内容(在本例中为 LWJGL)。大多数框架允许您 select 在创建时将样本计数作为参数之一。
Framebuffer Objects 也可以用来做这件事而不会弄乱你的 window 的参数,但是它们比这个讨论所需要的要复杂得多。
(2) 就像调用 glEnable (GL_MULTISAMPLE)
.
一样简单
我正在为我的 OpenGL 程序寻找一种抗锯齿算法(所以我寻找了一个好的着色器)。问题是,所有着色器都想对纹理做一些事情,但我不使用纹理,只使用颜色。我大部分时间都在看 FXAA,那么是否有一种只适用于颜色的抗锯齿算法?我的游戏,这是为了看起来像 minecraft 的块状,但只适用于不同大小的颜色和立方体。
希望有人能帮助我。
问候
抗锯齿与纹理或颜色没有特别的关系。
适当的抗锯齿是关于采样率的,虽然技术含量很高,但可以认为是做额外的工作,以便对无法直接查找的某些值进行更好的有根据的猜测(例如 仅部分被三角形覆盖的像素)。
多重采样抗锯齿 (MSAA) 将非常适合您,它只会消除多边形边缘的锯齿,而不会对多边形内部的纹理锯齿产生任何影响。由于您不使用纹理,因此无需担心多边形内部的锯齿。
顺便说一下,FXAA 不是适当的抗锯齿功能。 FXAA 基本上是一种基于着色器的边缘检测和模糊图像处理滤镜。 FXAA 将模糊场景中具有锐利边缘的任何部分,无论是多边形边缘还是由于贴图纹理而产生的边缘。它会不分青红皂白地模糊任何它认为是锯齿边缘的东西,而且经常弄错,导致纹理模糊。
要使用 MSAA,您需要:
- 具有至少 2 个样本的帧缓冲区
- 启用多重采样光栅化
满足 (1) 将取决于您用来创建 window 的内容(在本例中为 LWJGL)。大多数框架允许您 select 在创建时将样本计数作为参数之一。
Framebuffer Objects 也可以用来做这件事而不会弄乱你的 window 的参数,但是它们比这个讨论所需要的要复杂得多。
(2) 就像调用 glEnable (GL_MULTISAMPLE)
.