2013-01-12 3 views
6

OpenGL을 처음 사용했습니다. 나는 안드로이드에서 학업 목적으로 색맹 앱을 만들고 있습니다. 셰이더에서 필요한 조작을 수행하는 데 필요한 모든 코드가 있지만, 여전히 자바 코드에서 만든 데이터를 볼 수 있도록 셰이더를 가져야합니다. 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

관련 문제