現在、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:透明度とデプステストの問題
- 7. アンドロイド用OpenGL ESでの2Dゲーム用レンダリング画像
- 8. RGBA32ピクセルをOpenGL ESテクスチャに直接保存する
- 9. 2Dスプライト用のOpenGL ESドロップシャドウ
- 10. OpenGLレンダリングにテクスチャ透明度問題
- 11. iPhone OpenGLのテクスチャが完全に透明でない
- 12. OpenGL ES 2.0テクスチャ
- 13. OpenGL ESで明るさとコントラストを適用する
- 14. OpenGL ES 1.1 2D(iPhone):テクスチャ/四角形のオブジェクトのサイズを変更する
- 15. AndroidでOpenGL ESで透明テクスチャを表示する際の問題
- 16. iOSのポイントスプライトにテクスチャ(スプライトシート/テクスチャマップ)の一部を適用するOpenGL ES 2.0
- 17. opengl esテクスチャを無効にする
- 18. 2D OpenGL ESアーキテクチャ
- 19. iOS:アルファ透明度を持つGLテクスチャとしてのビデオ
- 20. OpenGL-ES 2.0(Android用)、2Dダイナミックライティングエフェクトを作成するには?
- 21. OpenGL ES/Cocos2dのテクスチャを最適化するためのレシピ
- 22. 透明度ドット付きOpenGL ES 2.0
- 23. 半透明モデル内のOpenGL(ES)モデル
- 24. iPhone用OpenGL ESでDepthBufferをリクエストする
- 25. iPhone OSの2Dユーザーインターフェイスに使用できるOpenGL ESフレームワークはどれですか?
- 26. Android OpenGL ES 2.0テクスチャ
- 27. このOpenGL ESテクスチャに適切なパースペクティブを適用するにはどうすればよいですか?
- 28. OpenGL ES 1.1 2つのテクスチャを1つの再利用可能テクスチャに結合する
- 29. OpenGL ESレンダラを2D用にセットアップしますか?
- 30. XNA:透明でないピクセルにのみSpriteBatch.Draw(...)カラーを適用する
でピクセルを破棄することができますがアルファブレンディングないですZ-試験後行きますか? – noop