2010-08-09 104 views
3

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

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行会导致它渲染对象。

回答

2

可能你的screenWidth/screenHeight没有初始化呢?

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

+0

这不完全是。它们已初始化,但它们与我绘制的UIView的维度不匹配。谢谢,这让我看到了正确的地方 – 2010-08-11 15:14:49