現在、2Dゲームでブレンドとデプステストを行っています。私がテクスチャを描くとき、「上側の」テクスチャは、下側のテクスチャの一部が交差する場合にそれらを削除します。明らかに、テクスチャの透明ピクセルは深度テストの考慮に入れられ、描画された下位テクスチャが交差する場合は、すべての色をクリアします。さらに、アルファブレンディングが正しくレンダリングされません。 OpenGLに透過ピクセルをデプステストに含ませないように指示する関数はありますか?iPhone OpenGL ES:2Dゲーム用に透明ピクセルを持つテクスチャにデプステストを適用する
2
A
答えて
2
いいえ、できません。これは、すべてのハードウェア深度テストに当てはまります。
GL(フルまたはES - およびD3D)はすべて同じモデルです。ポリゴンを指定した順序でペイントします。ポリゴンBの前にポリゴンAを描画し、論理的にポリゴンAをポリゴンBの前に配置すると、ポリゴンBは塗りつぶされません(デプステストのおかげ)。
解決策は、現在のビューの原点から最も近いものから順番にポリゴンを描画することです。 2Dゲームでうまくいけば、これは単純な並べ替えでなければなりません(おそらく非常に頻繁に行う必要はないでしょう)。
3Dゲームでは、BSPがこの問題の基本的な解決策です。
3
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_EQUAL, 1.0f);
これは、完全に不透明以外のアルファを持つすべてのピクセルを破棄します。これらのピクセルは、Zバッファにレンダリングされません。しかし、これはさまざまなZバッファ・パイプラインの最適化に影響を与え、重大な減速を引き起こす可能性があります。 が本当にの場合にのみ使用してください。
0
どのようなタイプのブレンドを使用していますか?
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
アルファ0のフラグメントがデプスバッファに書き込まれないようにする必要があります。
2
あなたがシェーダを使用している場合、ブレンド無効にしてみてくださいとアルファ0
if(texColor.w == 0.0)
discard;
関連する問題
- 1. iPhone OpenGL ESテクスチャ2Dマスキング
- 2. OpenGL ESでは、透明ピクセルを持つテクスチャをどのように読み込むのですか?
- 3. iPhone OpenGL ES 2dの背景テクスチャ
- 4. OpenGL ESとAndroidで透明度を持つテクスチャを読み込む問題
- 5. アルファチャンネルを使用しないOpenGL ESを使用した透明テクスチャ
- 6. OpenGLテクスチャを透明にするVBO
- 7. Opengl:透明度とデプステストの問題
- 8. RGBA32ピクセルをOpenGL ESテクスチャに直接保存する
- 9. アンドロイド用OpenGL ESでの2Dゲーム用レンダリング画像
- 10. OpenGL ES:2D配列テクスチャの単一レイヤを2Dテクスチャのサブリージョンにコピー
- 11. OpenGL:透明テクスチャの問題
- 12. iPhone OpenGLのテクスチャが完全に透明でない
- 13. 2Dスプライト用のOpenGL ESドロップシャドウ
- 14. OpenGL ES 2.0テクスチャ
- 15. OpenGL ES 1.1 2D(iPhone):テクスチャ/四角形のオブジェクトのサイズを変更する
- 16. OpenGLレンダリングにテクスチャ透明度問題
- 17. OpenGL ESで明るさとコントラストを適用する
- 18. AndroidでOpenGL ESで透明テクスチャを表示する際の問題
- 19. iOSのポイントスプライトにテクスチャ(スプライトシート/テクスチャマップ)の一部を適用するOpenGL ES 2.0
- 20. opengl esテクスチャを無効にする
- 21. iPhone用OpenGL ESでDepthBufferをリクエストする
- 22. 2D OpenGL ESアーキテクチャ
- 23. OpenGL ES/Cocos2dのテクスチャを最適化するためのレシピ
- 24. 半透明モデル内のOpenGL(ES)モデル
- 25. 透明度ドット付きOpenGL ES 2.0
- 26. Triangleストリップの透明度オブジェクトOpenGL es 2.0
- 27. iPhone OSの2Dユーザーインターフェイスに使用できるOpenGL ESフレームワークはどれですか?
- 28. Android OpenGL ES 2.0テクスチャ
- 29. iOS:アルファ透明度を持つGLテクスチャとしてのビデオ
- 30. 透明なテクスチャへのOpenGLレンダリング
でピクセルを破棄することができますがアルファブレンディングないですZ-試験後行きますか? – noop