3

我正在按预期工作的 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
4

1 回答 1

2

如果您只是在外观之后,而不是在寻找渲染加速,请不要抖动背景。您的循环将绘制背景,应用抖动,然后绘制前景。由于背景从不移动,因此累积的背景会出现混叠。

于 2009-11-21T23:13:15.067 回答