我正在绘制我的3D场景背后的背景,它按预期工作(代码如下)。我还使用累积缓冲区对场景进行消除锯齿(红色书的第10章)。OpenGL AntiAliasing和Background Quad
...多次循环(比方说,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
GLAccum在GL 3.0中被弃用是有原因的。这是一个非常缓慢的方法来做抗锯齿。我建议使用MSAA。如果你的设备不支持它,那么FSAA仍然比glAccum好。 – Bahbar 2009-11-24 09:46:22