2011-10-20 3 views
1

Render to Texture 설정을위한 프레임 버퍼 개체를 만듭니다. 그것은 아이폰 시뮬레이터에서 완벽하게 작동하지만 glCheckFramebufferStatus (GL_FRAMEBUFFER) 함수는 FBO 생성이 끝날 때 GL_FRAMEBUFFER_UNSUPPORTED를 반환합니다.장치의 OpenGL ES 2.0에서 GL_FRAMEBUFFER_UNSUPPORTED 가져 오기

GLenum errNo; 
GLsizei width = 320; 
GLsizei height = 480; 
GLuint textureHandle; 
GLuint fboHandle; 

glGetError(); 

glGenTextures(1, &textureHandle); 
glBindTexture(GL_TEXTURE_2D, textureHandle); 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,GL_HALF_FLOAT_OES, NULL);    

glGenFramebuffers(1, &fboHandle); 
glBindFramebuffer(GL_FRAMEBUFFER,fboHandle);  
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureHandle, 0); 


errNo = glCheckFramebufferStatus(GL_FRAMEBUFFER); 
if(GL_FRAMEBUFFER_COMPLETE != errNo){ 
    printf("Unable to create FBO. errNo: %x\n",errNo); 
} 

내가 우둔입니다 : 나는 아이폰 OS 5. 여기

와 아이폰 3GS에서 테스트하고하면 코드입니다. 이 문제를 어떻게 디버깅해야합니까?

+0

확인하려는 GL 오류가 어딘가? (glGetError() 사용). –

+0

내 코드에서 glGetError() 문을 참조하는 경우 이전 오류 번호를 지우는 데 사용됩니다. – kal21

+0

나는 코드에 어떤 문제도 보이지 않는다. 나는이 책에서 모든 API를 두 번 확인했다. 나는 또한 텍스쳐 크기를 32x48로 축소하여 메모리 문제인지를 확인했지만 여전히 동일한 오류를 준다. – kal21

답변

2

해결책을 찾았습니다. GL_HALF_FLOAT는 iPhone에서 지원되지 않습니다. 대신 GL_UNSIGNED_BYTE를 사용했는데 이제 작동합니다.

은 작동하지 않습니다 :

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,GL_HALF_FLOAT_OES, NULL);    

작품 :

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,GL_UNSIGNED_BYTE, NULL);    
관련 문제