2
OpenGLでシミュレーションの透明性が問題になっています。 ここにシナリオがあります:透明なオブジェクト内のOpenGLアルファブレンディング
私は球で表される船を持っています。 今、私は船の周りにシールドを追加することについて。私は球も選びましたが、半径が大きく、アルファ係数0.5(不透明度)を設定しました。ただし、シールドが表示されず、色が混ざり合っていません(あたかもそこになかったかのように)。
カメラは第1球の中心にあります。問題は私が球の中にいることだと思うので、openglは無視します(描画しないでください)。
コードは次のようになります。
//ship colors setup with alpha 1.0f
glutSolidSphere(1, 100, 100); original sphere (ship)
//shield colors setup with alpha 0.5f
glutSolidSphere(3, 100, 100); //the shield whose colors should blend with the rest of the scene
は、私は、船の前で直方体でシールドをシミュレートするためにかかわらず持っています。 しかし、これは私が欲しいものではありません...
編集:私は間違いを発見しました。私はgluPerspective()の近くのパラメータも高く設定していました。したがって、アルファ値を正しく設定していても、カメラは常にオブジェクトの前にあって、見る方法がありませんでした。
もカメラは球体の外に、それは船の中心部に右ですされていない...しかし、私が中心にカメラを移動する場合、あまりにも動作するようですあなたの例ではキューブです。オブジェクトの内部で何が起こるか説明できますか? –
まあ、 'glEnable(GL_DEPTH_TEST)'と仮定し、内部(=最初に描画された)球の内部にいる場合は、深度バッファが特定の(近くの)Z値になります。 2番目の球をさらに引き出しようとすると、2番目の球のすべてのピクセルで深度テストが失敗します。なぜなら、それらはすべて内側の球よりも遠く離れているからです。私の例は、 'GL_DEPTH_TEST'を有効にしていないので、デフォルトではoffになっているので動作します。 – genpfault