抗锯齿OpenGL ES 2.0

Iva*_*del 1 android rendering opengl-es antialiasing

如何对整个渲染中的三角形进行抗锯齿处理?我应该把它放在fragmentShader上吗?有没有其他好的解决方案来改善这种事情?

这是我的"视图",边缘非常脆(不是很好).

在此输入图像描述

Iva*_*del 6

做了一些Deep研究之后,我发现它实际上非常简单,而最常见的做法是渲染得像屏幕大4倍(甚至超过4倍).渲染到这个更大的屏幕后,GPU将采用该区域的范围并基于此设置像素颜色.

使用此库启用此功能非常简单:

https://code.google.com/p/gdc2011-android-opengl/source/browse/trunk/src/com/example/gdc11/MultisampleConfigChooser.java

但是,你应该记住,它将花费4倍或更多的时间来渲染一切,这意味着更多的时间来处理,也许更少的FPS ......

此外,如果您使用OpenGL模拟Android设备,请查明您的GPU是否支持这种多重采样.我的例如,doesen't(Tegra).

这是最终结果,有和没有多重采样:

在此输入图像描述

  • 多重采样不会将渲染时间增加4倍.甚至不接近.它仍然每个像素仅执行一次片段着色器,然后根据覆盖范围将相同的结果写入最多4个输出样本.虽然输出缓冲区理论上是4倍大,但它通常是压缩的.这个答案所描述的听起来更像是超级采样,这是一种非常不同的方法. (2认同)
  • @RetoKoradi,但无论如何,片段着色器需要"子渲染"4个像素,以便处理平均值.如果渲染一个像素成本为1,渲染4也会花费4,加上时间取平均值......当然,它不会是"平均花费的时间",而是它的最大限制(因为取决于GPU内核的数量,它可以并行完成......但无论如何,渲染它的时间要花费4倍,不要考虑并行渲染 (2认同)