简体   繁体   English

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

[英]OpenGL-ES 1.1 iPhone - Depth buffer causes magenta screen

I have an iPhone OpenGL-ES 1.1 project that renders simple 3D models. 我有一个iPhone OpenGL-ES 1.1项目,可以呈现简单的3D模型。 If I do not attach a depth buffer, everything renders correctly (except with no depth awareness of course). 如果我没有附加深度缓冲区,则所有内容都会正确呈现(当然除了没有深度感知)。 When I attach the depth buffer however, all that renders is a magenta screen. 但是,当我附加深度缓冲区时,所有呈现的都是洋红色屏幕。 The clear color is not set to magenta. 清晰的颜色未设置为洋红色。 It is blue. 它是蓝色的。 Anyone know what is going on here. 任何人都知道这里发生了什么。 This is my setup code => 这是我的设置代码=>

    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);

This gives the magenta screen. 这给了洋红色屏幕。 Commenting out the last 4 lines will cause it to render the objects. 注释掉最后4行将导致它渲染对象。

probably your screenWidth / screenHeight aren't initialized yet? 可能你的screenWidth / screenHeight尚未初始化?

check if the folllowing fixes your problem: glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, 320, 480); 检查以下是否解决了您的问题:glRenderbufferStorageOES(GL_RENDERBUFFER_OES,GL_DEPTH_COMPONENT16_OES,320,480);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM