1
我正在爲「渲染爲紋理」設置創建幀緩衝區對象。它在iPhone模擬器上工作得非常好,但在設備上,FBO創建結束時,glCheckFramebufferStatus(GL_FRAMEBUFFER)函數返回GL_FRAMEBUFFER_UNSUPPORTED。 我與iOS 5在設備上的OpenGL ES 2.0中獲取GL_FRAMEBUFFER_UNSUPPORTED
這裏測試它在iPhone 3GS是代碼:
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);
}
我無言以對。我應該如何調試這個問題?
你檢查GL錯誤的地方? (通過使用glGetError())。 –
如果您在我的代碼中引用了glGetError()語句,那麼它只是在那裏清除以前的錯誤號。 – kal21
我根本沒有看到任何代碼問題,我仔細檢查了本書中的所有API。我還將紋理大小縮小到32x48,以查看是否存在內存問題,但它仍然會出現相同的錯誤。 – kal21