我正在我的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
答案 0 :(得分:2)
如果你只是在外观之后,而不是寻找渲染加速度,请不要抖动背景。你的循环将绘制背景,应用抖动,然后绘制前景。由于背景永远不会移动,因此累积的背景会有别名。