2

OpenGLのNeHeチュートリアルを実行しています...レッスン8(ブレンドを使用して立方体を描画する)にいます。http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=08

実験して、面の半分を不透明に変更して、不透明な面の反対側に常に半透明の面があり、立方体を回転できるようにしたかったのですが...

コードを少し変更しました。ソース全体がそこにあります:http://pastebin.com/uzfSk2wB いくつか変更しました:

  • デフォルトでブレンディングを有効にし、ブレンディング関数をglBlendFunc(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA);に設定します。
  • 各面の面と色の描画順序を変更しました。
    • 深度テストを設定しました
    • 不透明な面をすべて描きます
    • 深度テストを無効にします
    • すべての透明な面を描きます

さて、何が悪いのか正確に判断するのは難しいですが、間違いなく正しく見えません。透明な顔と比べて不透明な顔がわかりません。必要なときに描画されないように見える顔もあります...など。 ..

後ろと比べて前の顔を計算するのは簡単ではないようですが(確かに可能ですが)、そうする必要がない方法があるといいのですが。

私のコードの何が悪いのか、またはこれがそもそもそれを行う正しい方法ではないのかどうかを探します。

4

1 に答える 1

4

透明な面を描画する前に深度テストを無効にすると、正しいz順序に関係なく描画されます。おそらく、透明な面が他のすべての面の上に描かれているように見えます。深度テストはオンのままにします。

于 2011-01-09T06:04:17.347 に答える