【发布时间】:2015-01-25 18:30:13
【问题描述】:
在 OpenGL 中使用片段着色器软化简单图元(例如 GL_TRIANGLES)的边缘的最简单技术是什么?
我读到在GL_BLEND 上下文中,我们可以根据片段与边缘的接近程度来调整片段的 alpha 值;但是在实践中如何有效地实现呢?
【问题讨论】:
-
多重采样抗锯齿
-
我已经读过这个,但是一些硬件不支持它。我已经看到可以在着色器中实现此效果,如本文所述:http.developer.nvidia.com/GPUGems3/gpugems3_ch25.html 我无法使用提供的代码的原因是因为它绘制了一条别名曲线。我希望找到一种可用于平滑任意多边形边缘的方法。
-
如果您使用混合软化边缘,您将不得不从后到前绘制几何图形。这可能是不切实际的,但这本质上是多边形平滑在桌面 OpenGL 中的工作原理,然后才被删除。从您的平台标签中,我假设您使用的是 OpenGL ES - 不幸的是,多重采样渲染缓冲区不是 OpenGL ES 2.0 的核心。但是,MSAA 在支持像素着色器的硬件上是相当标准的——创建它是为了减少像素着色器必须运行的次数。它可能暴露在 EGL 级别。
标签: android opengl-es glsl jogl antialiasing