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 に答える