OpenGL-ES 1.1 iPhone - 深度缓冲区会导致洋红色屏幕

时间:2010-08-09 15:14:18

标签: iphone opengl-es

我有一个iPhone OpenGL-ES 1.1项目,可以呈现简单的3D模型。如果我没有附加深度缓冲区,则所有内容都会正确呈现(当然除了没有深度感知)。但是,当我附加深度缓冲区时,所有呈现的都是洋红色屏幕。清晰的颜色未设置为洋红色。它是蓝色的。任何人都知道这里发生了什么。这是我的设置代码=>

    glGenFramebuffersOES(1, &framebuffer);
    glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer);

    glGenRenderbuffersOES(1, &colorRenderbuffer);
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_RGBA8_OES, screenWidth, screenHeight);
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, colorRenderbuffer);

    glGenRenderbuffersOES(1, &depthRenderbuffer);
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, screenWidth, screenHeight);
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);

这给出了品红色屏幕。注释掉最后4行将导致它渲染对象。

1 个答案:

答案 0 :(得分:2)

可能你的screenWidth / screenHeight尚未初始化?

检查以下是否解决了您的问题: glRenderbufferStorageOES(GL_RENDERBUFFER_OES,GL_DEPTH_COMPONENT16_OES,320,480);