2016-09-13 3 views
2

OpenGL GLSurfaceView에 바이트 배열을 표시하려고합니다. OpenGL, Android에서 바이트 배열로 텍스처 만들기

그래서 나는 Renderer를 구현하는 GLRenderer 클래스와 방법
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); 

onSurfaceCreated

을하지만 아무것도 화면에 표시되지 않습니다. 참고로, onSurfaceChanged 및 방법에는 특별한 코드가 없습니다.

+0

부호없는 바이트 RGBA 형식을 사용하는 경우 픽셀 당 4 바이트의 데이터가 필요합니다. 또한 onDrawFrame에 특별한 코드가 없다는 것은 무엇을 의미합니까? 텍스처를 어떻게 바인딩합니까? – pleluron

+0

그런 다음 GL_RED 색상 형식을 사용하고 픽셀 당 1 바이트로 돌아갑니다. – pleluron

+0

@pleluron 귀하의 회신에 감사드립니다. 대답을 게시 할 수 있습니까? – Newben

답변

1

형식과 데이터 크기가 일치하지 않습니다. GL_RGBA는 텍셀 당 4 * sizeof (유형)를 차지하므로 그에 따라 버퍼를 스케일링해야합니다. 그러나 단일 채널 텍스처 만 원하는 경우 GL_RED를 대신 사용하십시오.