2013-04-03 59 views
1

雖然移植自iPhone 4S的應用程序到iPhone 5,我調用此代碼後,得到了錯誤GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:爲什麼GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS? iPhone 5

glBindFramebuffer(GL_FRAMEBUFFER, 1); 

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, 1); 

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, 2); 

按照OpenGLES規範的錯誤是由「附件不要 有同樣引起寬度和高度「,但我爲顏色和深度緩衝區都使用了1136 x 640。

相同的代碼運行良好於iPhone 4s(具有960×640的緩衝液)。

回答

2

顏色的深淺和緩衝區有差異的大小。 爲了獲得真正的大小顏色緩衝區:

[context renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer] 
    glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &w); 
    glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &h); 

還需要設置規模CAEAGLLayer:

layer.contentsScale = [[UIScreen mainScreen] scale]; 

你可以看到它是如何在OGRE3D,SDL,的Cocos2D-X進行。