2012-01-06 15 views
0

私はアンドロイドndkを使用してゲームを書いています。私は、OpenGLでオブジェクトを選択するためにピッキングを使用しています。 私は、私がレンダリングするオフスクリーンのフレームバッファオブジェクトを持っており、私はFBOから色を取得するためにglReadPixels()を使用します。色は、クリックされたオブジェクトのidをエンコードします。Android NDK glReadPixels()オフスクリーンバッファ

問題はglReadPixels()が機能しないことです。それは単に色の値を読み取ることはありません。 私はそれを動作させるために何かする必要がありますか?

GLubyte pixel[4] = {0,0,0,0}; 
    glReadPixels(x, y , 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void *)pixel); 

これは、私がどのようにreadpixelsを使用しようとしているかです。しかし、結果は常に(0,0,0,0)です。 座標(x、y)を確認しました。彼らは大丈夫です。 GL_RGBA、GL_UNSIGNED_BYTEの組み合わせは、openglの文書によると、OpenGL 2.0の実装によってもサポートされるはずです。

私はアンドロイドマニフェストで設定する必要があるアクセス許可について何かを読んだことがあります。 私はこのような権限を追加しようとしました:

<uses-permission android:name="android.permission.READ_FRAME_BUFFER"/> 

が、それはどちらか動作しませんでした。

解決策は誰にでもありますか?私はどこから見える?

答えて

1

問題は単なるスレッドの問題でした。すべてのOpenGL呼び出しを同じスレッドで実行する必要があります。さもなければ、これは奇妙な振る舞いをこのように悪化させる可能性があります。

0

Dirkの提案が私の問題を修正しました。これはスレッドコンテキストでした。