アンドロイドデバイス(OpenGL ES 2.0)のデプスバッファに書き込む必要があります。 gl_FragDepth
はOGL ES 2.0で書き込み可能ではないため、回避策を見つける必要があります。私は実際に、このようなレイキャスティングで球体をレンダリングしたい:http://www.sunsetlakesoftware.com/2011/05/08/enhancing-molecules-using-opengl-es-20。 しかし、このWebサイトで説明されている解決策(glBlendEquation
を使用して深度を書き込むオフスクリーン描画パス)は、GL_MIN_EXT
-blendingはサポートされていないため、AndroidではなくAppleデバイスでのみ動作します。私は、このメソッドを実装することができた私のTegra3タブレットでOpenGL ES 2.0でデプスバッファ/デプス値を書き込むための回避策
:Android GLES20.glBlendEquation not working?(ところで、私は線形化深さの値を使用することをお勧め、彼らはより良い結果を与える!) それはかなり良い作品が、もちろんこれは、NVIDIA GPU上でのみ利用可能です。
理論的には、拡張子はGL_EXT_frag_depth
(Can an OpenGL ES fragment shader change the depth value of a fragment?参照)ですが、Android搭載端末では利用できません。
最後に、(オフスクリーンのレンダリングパスで)ただ1つの球のデプスバッファを書き、2番目のレンダリングパスに次の球のデプスバッファを書き、3番目のレンダリングパスで2つを結合することができます。そうすることで、n個の球に対して2 * n + 1回のレンダーパスを行うことになります。これは非常に非効率的です!
私はアイデアが不足しているので、私の質問は次のとおりです。OpenGL ES 2.0のAndroidデバイスにデプスバッファを書き込むための一般的な方法/回避策がありますか?
これは興味深いオプションのように聞こえる!私が望んでいたほどエレガントな解決策ではありませんが、他にはないようです...私はおそらくそれを試してみましょう。深度選別は、ほとんどのタンパク質や他の小さな分子にとっては十分に速いはずです。 – kroneml