【发布时间】:2009-11-20 19:59:49
【问题描述】:
我正在我的 3D 场景后面绘制一个背景,它按预期工作(下面的代码)。我还在使用累积缓冲区(红皮书第 10 章)对场景进行抗锯齿处理。
...通过抖动和绘制图像的代码循环数次(例如,n)(抖动是将图像移动到稍微不同的位置),用
累积数据glAccum(GL_ACCUM, 1.0/n)
最后调用
glAccum(GL_RETURN, 1.0)
但是,我不想对背景进行抗锯齿处理。问题是使用 GL_RETURN 调用 glAccum 会复制(覆盖)颜色缓冲区中的值(而不是使用深度测试和混合函数等)以屏蔽正在写入颜色缓冲区的值。
如何在对 3D 场景进行抗锯齿之前或之后绘制背景,以使背景看起来与我在不进行抗锯齿的情况下绘制 3D 场景时一样?
// Draw the background.
glMatrixMode GL.GL_PROJECTION
glLoadIdentity
glMatrixMode GL.GL_MODELVIEW
glLoadIdentity
glPolygonMode GL_FRONT_AND_BACK, GL_FILL
glDisable glcDepthTest
glBegin bmQuads
// Call glColor and glVertex here.
glEnd
glEnable glcDepthTest
【问题讨论】:
-
GL 3.0 中不推荐使用 glAccum 是有原因的。这是一种非常缓慢的抗锯齿方法。我建议使用 MSAA。如果你的设备不支持,那么 FSAA 还是比 glAccum 好。
标签: opengl background antialiasing