OpenGL AntiAliasing和背景四

时间:2009-11-20 19:59:49

标签: opengl background antialiasing

我正在我的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

1 个答案:

答案 0 :(得分:2)

如果你只是在外观之后,而不是寻找渲染加速度,请不要抖动背景。你的循环将绘制背景,应用抖动,然后绘制前景。由于背景永远不会移动,因此累积的背景会有别名。