0

シーン上に半透明の黒いクワッドを配置して、2D OpenGL シーンの単純なシェーディングを作成しようとしていますが、特定の場所では、シーンを暗くする代わりに完全に黒くします。glBlendFunc(GL_DST_COLOR, GL_SRC_ALPHA)シェーダー クワッドと、glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)その下にある他のすべての描画に使用しています。

これは通常は機能し、半透明のクワッドの下の領域を暗くしますが、特定の状況では奇妙な動作をします。半透明の四角形の下の領域の背後に四角形が 1 つしか描画されていない場合、通常どおりに動作します。別のクワッド (または複数のクワッド) が後ろのクワッドの上に描画されると、正常に動作することもあれば、クワッドが完全にブラックアウトされることもあれば、最後に描画されたクワッドの下のすべてがブラックアウトされることもあります (たとえば、上の青い点、下の赤い点は黒く塗りつぶされますが、青い点は変更されません)。

これは四角形が間違った順序で描画されているように見えると思いましたが、GL_DEPTH_TEST無効にしたので、これが混合、順序の誤り、またはその他の何かからの奇妙な動作なのかどうかはわかりません. これを引き起こしている可能性のあるものについてのアイデアはありますか?

4

0 に答える 0