【发布时间】:2010-08-09 15:14:18
【问题描述】:
我有一个渲染简单 3D 模型的 iPhone OpenGL-ES 1.1 项目。如果我不附加深度缓冲区,一切都会正确呈现(当然除了没有深度意识)。但是,当我附加深度缓冲区时,渲染的只是洋红色屏幕。透明色未设置为洋红色。它是蓝色的。任何人都知道这里发生了什么。这是我的设置代码 =>
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 行将导致它渲染对象。
【问题讨论】: