在将应用程序从iphone 4s移植到iPhone 5时,我在调用此代码后收到错误GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
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 x 640缓冲区)上运行良好。
答案 0 :(得分: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中看到它是如何完成的。