2011-01-03 1 views
8

OpenGL ES2.0プログラミングガイドの2dテクスチャのアンドロイド版のバージョンを変更して、フラグメントシェーダを変更しています。これは純粋なJavaで書かれており、NDKを使用しません。glGetShaderInfoLogは空の文字列(アンドロイド)を返します

私の電話ではバニラの例はうまく動作しますが、シェーダコードを変更するともう機能しません。これは、私の修正されたシェーダーが(明らかに)コンパイルされないためですが、glGetShaderInfoLogが空の文字列を返すため、問題の原因を見つけることができません。

私はこの問題について検索しましたが、明らかに7月22日現在では既知の問題でしたが、どのような方法で回避するのか不思議でした。私が見つけた1つの記事は、彼らが関数のためのNDKラッパーを書いていると言いましたが、Androidの開発には新しく、これをどうやって行うのか本当に分かりません。

答えて

6

あなたはa bugに苦しんでいます。私はold GL ES 2.0 bindingsを使用して機能してglGetShaderInfoLogを取得しました。このように:

import com.badlogic.gdx.backends.android.AndroidGL20; 
... 
AndroidGL20 gl2 = new AndroidGL20(); 
Log.e(TAG, gl2.glGetShaderInfoLog(shader)); 

私はまだ標準のGLES20ラッパーライブラリを使用していますので、これは自分のコードベースに簡単にドロップできます。 2つのラッパーは明らかに問題なく共存できます。

2

同じ問題が発生したので誰もがこの質問を見つけることができませんでした。私は "それを回避"するための唯一の方法は別のアプリケーション(Rendermonkeyなど)でシェーダをコンパイルすることです。理想的ではありませんが、それは私のプロジェクトでさらに私を得ました!

1

私は同じ問題がありました。

  1. あなたはApplicationManufest.xmlで、次のしていることを確認してください:

    <はアンドロイド-機能の使用:glEsVersion = "0x00020000" のandroid:必要= "真" />

  2. GLSurfaceViewの初期化後に呼び出します

glSurfaceView.SetEGLContextClientVersion(2);