2011-10-20 20 views
5

ここで使用されているものと同じではなく、数週間、深度と通常のマップテクスチャを持つ2.5Dエンジンを作成しようとしていましたLinky。 ES 2.0がgl_fragDepth変数を見つけられなかったために、フラグメントシェーダのデプスマップの描画が不可能であったと思ったのですが、iOS用のglBlendEquationモードをGL_MIN/GL_MAXで使用して、フラグメントの深さバッファリングを "偽"フレームバッファテクスチャLinkyに転送する。残念ながら、GLES20.glBlendEquationは、UnsupportedOperationExceptionを指定して、両方の携帯電話(SGS 1/2)でアプリケーションをクラッシュさせます。だから誰でもこの関数を使って成功したのだろうか? GL_MIN/GL_MAXもAndroid OpenGL ES 2.0の仕様から抜けているようですので、ここで運がうまくいっていないでしょう... アイデアはありますか?Android GLES20.glBlendEquationが機能しません。

私はGL11Extで動作するようですが、私は通常のマッピングのためにフラグメントシェーダを使用しているので、これは私の仕事ではありません。

+0

解決方法を見つけましたか? – Jave

+0

@ javeいいえ私はこれ以上検討していないし、私はフォーラムでのフィードバックを持っていません。だから私の前提は、アンドロイドOpenGL ES 2.0では実装されていないということです。おそらくこれは新しいバージョンのOSで修正されていますか?私はアンドロイドOS v2.3を使ってこれをテストしました。 –

+0

私は2,3日前に自分自身でこの問題に遭遇しましたが、解決策も見つけられませんでした。 (途中でAndroid 2.2を使用する)。あなたが問題を解決したら、どうやってそれをやったのか見たいと思います。 – Jave

答えて

1

私は私のベガ錠(Tegraは)上で実験をして、これは私の仕事:

フラグメントシェーダ:

#extension GL_NV_shader_framebuffer_fetch : require 
// makes gl_LastFragColor accessible 

precision highp float; 

varying vec2 v_texcoord; 

uniform sampler2D n_sampler; 

void main() 
{ 
    vec4 v_tex = texture2D(n_sampler, v_texcoord); 
    gl_FragColor = min(gl_LastFragColor, v_tex); // MIN blending 
} 

かなり簡単ですよね。しかし、私はこれがNV専用だと思います。

関連する問題