如何使用着色器平滑基本图形的边缘?

3

什么是在OpenGL中使用片段着色器来软化简单图元(如GL_TRIANGLES)边缘的最简单技术?

我读过在GL_BLEND上下文中,我们可以根据离边缘的距离调整片段的alpha值;但是实践中如何高效地实现这一点呢?


3
多重采样抗锯齿。 - ratchet freak
我已经了解过这个问题,但是有些硬件不支持它。我看到可以通过着色器实现这种效果,正如在这篇文章中所概述的那样:http://http.developer.nvidia.com/GPUGems3/gpugems3_ch25.html 我不能使用提供的代码的原因是它会绘制出锯齿状的曲线。我希望能找到一种方法来平滑任意多边形边缘。 - Mapsy
2
如果您使用混合来软化边缘,则必须从后往前绘制几何图形。这可能不太实用,但在桌面OpenGL中删除之前,这基本上就是多边形平滑的工作原理。根据您的平台标签,我将假定您正在使用OpenGL ES - 在OpenGL ES 2.0中,多样本渲染缓冲区不是核心功能。但是,在支持像素着色器的硬件上,MSAA非常普遍 - 它被创建以减少像素着色器运行的次数。它可能在EGL级别公开。 - Andon M. Coleman
1个回答

2

在典型的Android设备上,FXAA运行速度会相当慢。 - keaukraine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接