【发布时间】:2012-01-29 13:42:00
【问题描述】:
使用 WebGL(受限于 OpenGL ES 2 API),我成功地渲染到纹理,然后在屏幕上显示该纹理。因为它是纹理,所以没有抗锯齿。如果我渲染到 RBO,然后在屏幕上显示,我将能够利用 AA。
我的渲染目标设置如下所示:
- 创建 FBO
- 绑定FBO
- 创建纹理(要渲染到)
- 创建深度缓冲区并将其绑定为 RBO
- 将纹理和 RBO 附加到 FBO
我的渲染更新循环如下所示:
- 将场景渲染到上面步骤 #2 中创建的 FBO
- 使用上面第 3 步中创建的纹理渲染屏幕对齐的四边形
使用桌面 OpenGL,我会调用 glBlitFramebuffer() 而不是绘制屏幕对齐的四边形。
如何使用抗锯齿渲染我的场景?我需要用 RBO 替换纹理吗?如果是这样,我应该使用什么调用来绑定 RBO 以绘制屏幕对齐的四边形?
【问题讨论】:
-
为什么不能使用AA?在第一次渲染时,只需附加一个抗锯齿着色器,您就应该完成了......您还可以将场景渲染超级采样到一个大纹理,然后对其进行子采样
-
由于驱动程序问题,许多机器上禁用了普通 AA。它可能会随着时间的推移自行解决,但在那之前,没有办法以编程方式强制它。
-
但他/她可以使用程序化反别名...以 SMAA (iryoku.com/smaa) 为例...这需要一点努力,但结果很好跨度>
-
绝对可以通过实现其中一种可用方法在后期应用 AA,但这并不能帮助我理解使用 OpenGL ES 2 在屏幕上渲染 RBO 内容的正确方法是什么.
标签: opengl-es-2.0 webgl