【问题标题】:OpenGL-ES 1.1 iPhone - Depth buffer causes magenta screenOpenGL-ES 1.1 iPhone - 深度缓冲区导致品红色屏幕
【发布时间】: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 行将导致它渲染对象。

【问题讨论】:

    标签: iphone opengl-es


    【解决方案1】:

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

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

    【讨论】:

    • 并非如此。它们已初始化,但它们与我正在绘制的 UIView 的尺寸不匹配。谢谢,这让我找到了正确的地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多