7

私はOpenGLをまったく初めて使用します。学術目的で Android で色覚異常のアプリを作成しています。シェーダーで必要な操作を行うために必要なすべてのコードを用意しましたが、Java コードで作成したデータをシェーダーで表示できるようにする必要があります。私の Java コードでは、サイズ 262144 の大きな int 配列になってしまいました。この配列をできる限りシェーダーに渡そうとしましたが、大きすぎました。データをテクスチャに変換すれば、これだけの情報を簡単にシェーダーに渡すことができるとのことでした。

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

そのため、opengl テクスチャを作成し、データを入力して (バイト配列が最適ですか?)、シェーダーでそのテクスチャを使用できるようにする必要があります。誰かが私を助けることができれば、それは大歓迎です。私は非常にopenglの読み書きができないため、説明ではなく例を見た後はうまく機能しますが、どんな助けも歓迎します。

いくつかコーディングしてみました。私はGLES20.glTexImage2Dを作ろうとしてしまいました。バイト配列を渡すだけでいいと思ったのですが、バッファが必要ですか?? タスクを完了するために必要なすべての手順を教えてください。

どうもありがとう!

マイク

4

1 に答える 1

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);
于 2013-01-12T15:37:20.673 に答える