为什么GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS? iphone 5

时间:2013-04-03 09:19:08

标签: iphone-5

在将应用程序从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缓冲区)上运行良好。

1 个答案:

答案 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中看到它是如何完成的。