0

나는 android ndk를 사용하여 게임을 쓰고 있습니다. 나는 OpenGL에서 개체를 선택하기 위해 피킹을 사용하고 있습니다. FBOX에서 색상을 얻으려면 glReadPixels()를 사용하여 내가 렌더링하는 오프 스크린 프레임 버퍼 객체가 있습니다. 그러면 색상이 클릭 된 객체의 ID를 인코딩합니다.안드로이드 NDK glReadPixels() 오프 스크린 버퍼에서

문제는 glReadPixels()가 작동하지 않는다는 것입니다. 그것은 단지 어떤 색상 값도 읽지 않습니다. 작동시키기 위해해야 ​​할 일이 있습니까?

GLubyte pixel[4] = {0,0,0,0}; 
    glReadPixels(x, y , 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void *)pixel); 

이렇게하면 어떻게 필자는 readpixels를 사용하려고합니다. 그러나 결과는 항상 (0, 0, 0, 0)입니다. 좌표 (x, y)를 확인했습니다. 괜찮아. GL_RGBA, GL_UNSIGNED_BYTE 조합은 OpenGL 문서에 따라 OpenGL es 2.0 구현에서 지원되어야합니다.

나는 android manifest에서 설정해야하는 권한에 대해 읽었습니다. 나는이 같은 권한을 추가하려고 :

<uses-permission android:name="android.permission.READ_FRAME_BUFFER"/> 

하지만 중 하나가 작동하지 않았다.

솔루션에 대한 아이디어가 누구에게 있습니까? 또는 내가 볼 수있는 곳?

답변

1

이 문제는 단지 스레딩 문제 일뿐입니다. 모든 OpenGL 호출은 동일한 스레드에서 수행되어야합니다. 그렇지 않으면 이것은 이상한 행동을 초래할 수 있습니다.

0

Dirk의 제안으로 내 문제가 해결되었습니다. 스레드 컨텍스트였습니다.

관련 문제