2016-09-13 4 views
2

OpenGL GLSurfaceViewにバイト配列を表示しようとしています。OpenGL、Androidでバイト配列からテクスチャを作成する

だから私はRendererを実装GLRendererクラスを持っているし、方法onSurfaceCreated

byte[] data = new byte[512*512]; 
      for (int i = 0; i < 512*512; i++) { 
       data[i] = 100; 
      } 
      ByteBuffer buffer = ByteBuffer.allocateDirect(512*512); 
      buffer.put(data); 
      buffer.position(0); 

      GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, 512, 512, 0, 
        GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer); 

しかし、何が画面に表示されません。参考のために、onSurfaceChangedとの方法に特別なコードはありません。

+0

符号なしバイトRGBA形式を使用している場合は、1ピクセルあたり4バイトのデータが必要です。また、 'onDrawFrame'に特別なコードがないということは何ですか?どのようにテクスチャをバインドしますか? – pleluron

+0

GL_REDカラーフォーマットを使用し、1ピクセルあたり1バイトに戻ります。 – pleluron

+0

@pleluronご回答いただきありがとうございます。答えを投稿できますか? – Newben

答えて

1

フォーマットとデータサイズが一致しません。 GL_RGBAは、テクセルあたり4 * sizeof(タイプ)を占めるので、それに応じてバッファを拡大縮小する必要があります。ただし、単一のチャンネルテクスチャだけが必要な場合は、代わりにGL_REDを使用します。

関連する問題