2013-01-12 15 views
6

私はOpenGLを一度に新しくしました。私はAndroid上で学業目的でカラーブラインドアプリを作っています。私は、必要な操作を行うためにシェーダに必要なすべてのコードを用意していますが、Javaコードで作成したデータをシェーダで見ることができるようにする必要があります。私のJavaコードでは、サイズが262144の大規模な配列になってしまいました。私はこの配列をできる限りシェーダに渡そうとしましたが、大きすぎました。私は、データをテクスチャに変換すると、この多くの情報をシェーダに簡単に渡すことができます。Androidのバイト配列からOpenGLテクスチャを作成するには

int配列を同僚の指示に従ってバイト配列に変換しましたが、今はどのようにしてOpenGLテクスチャを作成し、シェーダが表示して使用するためにバイトデータを入力するか分かりません。

私はOpenGLテクスチャを作成し、それを自分のデータで埋める必要があります(最高のバイト配列ですか?)。そして、そのテクスチャをシェーダで使用できるようにする必要があります。誰かが私を助けることができれば、それは非常に高く評価されるだろう。私は非常にopenglが文盲であるので、例を見てから説明をしてもうまくいきますが、助けを歓迎します。

私はいくつかをコードしようとしました。私はGLES20.glTexImage2Dを作成しようとしました。私は私のバイト配列を渡すことができると思ったが、それはバッファを取る??私の仕事を完了するために必要なすべてのステップを教えてください。

ありがとうございます!

マイク

答えて

5

私はあなたが次のことをする必要があると思います。

byte data[4 * 262144]; // your byte array, 4 * int count 
ByteBuffer buffer = ByteBuffer.allocateDirect(4 * 262144); 
buffer.put(data); 
buffer.position(0); 

GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, width, height, 0, 
        GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer); 
+0

あなたはAndroid NDKでどのようにこれを行うことができますか? http://stackoverflow.com/questions/14431693/how-can-i-bind-a-pixel-array-of-integer-colors-to-a-texture-using-the-android-nd – torger

関連する問題