2016-09-13 37 views
2

我想在OpenGL GLSurfaceView中顯示一個字節數組。從OpenGL中的字節數組創建紋理,Android

所以我有一個GLRenderer類實現Renderer和方法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格式,則每個像素需要4個字節的數據。另外你在'onDrawFrame'中沒有特殊的代碼是什麼意思?你如何綁定紋理? – pleluron

+0

然後使用GL_RED顏色格式,並返回每像素1字節。 – pleluron

+0

@pleluron感謝您的回覆,它工作。你可以發佈答案嗎? – Newben

回答

1

格式和數據大小不匹配。 GL_RGBA每個紋理元素佔用4 * sizeof(類型),因此您需要相應地縮放緩衝區。但是,如果您只想要單個通道紋理,請改用GL_RED。