我有一个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行将导致它渲染对象。
答案 0 :(得分:2)
可能你的screenWidth / screenHeight尚未初始化?
检查以下是否解决了您的问题: glRenderbufferStorageOES(GL_RENDERBUFFER_OES,GL_DEPTH_COMPONENT16_OES,320,480);