2011-04-26 4 views
3

iPhone (iOS 4.1) 용 OpenGL ES 2.0 앱을 작성 중입니다. 셰이더에서 수행되는 계산이 끝나면 일부 데이터를 CPU에 다시 써야합니다. 내가 아는 한 glReadPixels()로이 작업을 수행 할 수 있습니다. 정밀도를 유지하기 위해, 나는 쉐이더 사이에서 half_float 또는 float 텍스처를 사용하고자하는데, 이것은 확장에 의해 지원되는 것처럼 보입니다.OpenGL ES 2.0 : float 또는 half_float 텍스처가있는 glReadPixels()

질문 : glReadPixels()을 사용하여 float 또는 half_float 텍스처를 읽을 수 있습니까?

감사합니다,

라스

답변

3

은 나도이 문제까지 직면했다. iOS의 경우 GL_EXTENSIONS 매개 변수가있는 사용 가능한 확장 프로그램 목록을 확인할 수 있습니다. GL_OES_texture_float가 있어야합니다. 그러나! specification에 따르면 GPU에서 부동 소수점 값을 읽을 기회가 없습니다. 이것은 glReadPixels()의 문서입니다.

두 가지 형식/유형 매개 변수 쌍만 허용됩니다. GL_RGBA/GL_UNSIGNED_BYTE는 항상 허용되며 다른 허용 가능한 쌍은 GL_IMPLEMENTATION_COLOR_READ_FORMAT 및 GL_IMPLEMENTATION_COLOR_READ_TYPE을 쿼리하여 검색 할 수 있습니다.

GLint ext_format, ext_type; 
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &ext_format); 
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, &ext_type); 
:

그래서 당신은 당신이 아래의 코드를 읽을 수있는 사용 가능한 유형/형식을 확인할 수 있습니다
관련 문제