2011-02-10 7 views
3

나는 안드로이드 용으로 작성한 OpenGL 게임을 선택하는 작업을하고 있습니다. 각 터치 가능한 객체를 각 객체에 고유 한 단색으로 그리는 "고유 한 색상"방법을 사용합니다. 그런 다음 사용자 입력은 터치 위치에서 glReadPixels()을 읽습니다. 나는 채색 작업을하고 glReadPixels은 작동하지만 glReadPixels의 사용을 복잡하게하는 주요 실제 렌더링에서 "색상"렌더링을 분리 할 수 ​​없었습니다.Android에서 OpenGL ES 1.0을 사용한 오프 스크린 렌더링 옵션은 무엇입니까?

아마도이 작업에 대한 트릭은 두 번째 장면 (입력 용)을 오프 스크린 버퍼로 렌더링하는 것이지만 이것은 약간 문제가있는 것처럼 보입니다. 나는 OpenGL ES1.1 FBO를 사용하여 오프 스크린 버퍼의 역할을 조사했지만 FBO를 지원하지 않는 것으로 보인다. (Samsung Galaxy S Vibrant (2.2)). 나는 사용자가 그것을 보지 않고도이 장면을 올바르게 렌더링하고 (그리고 glReadPixels를 실행하는) 방법을 잃어 버렸다.

이 종류의 오프 스크린 렌더링이 어떻게 수행 될 수 있는지에 대한 아이디어가 있습니까?

답변

4

FBO가 지원되지 않는 경우 항상 정상적인 백 버퍼로 렌더링 할 수 있습니다.

일반적인 사용법은 다음과 같습니다

  • 클리어 백 버퍼
  • 무승부 "컬러로-ID가"
  • 지우기 백 버퍼
  • 정상
  • SwapBuffers을 그릴 객체

두 번째 클리어는 피킹 코드가 t에 나타나지 않도록합니다. 그는 최종 이미지.

+0

또한 색상 id 객체를 그리지 만 프레임 버퍼에서 색상을 읽은 후에 glFlush를 수행해야합니다. – ryanm

+0

@ryanm : glFlush를 수행 할 필요가 없습니다. glReadPixels는 필요한 경우 flush를 수행합니다. – Bahbar

+0

문서에서 언급하지는 않지만 완전히 합리적인 행동이므로 올바른 것으로 보입니다. 매일 학교 수업이 있습니다! 이것은 열악한 품질의 OpenGL 구현에서 쉽게 간과 될 수있는 것으로 생각됩니다. – ryanm

관련 문제