【问题标题】:Why do you need the depth buffer?为什么需要深度缓冲区?
【发布时间】:2010-12-13 14:10:14
【问题描述】:

我不明白为什么我需要使用深度缓冲区,因为在this 项目中,立方体绘制时没有深度缓冲区。

对不起,我的英语不好。我是俄罗斯人,1.5 年前开始学习英语。

【问题讨论】:

    标签: iphone depth-buffer opengl-es-2.0


    【解决方案1】:

    在进行简单渲染时,很容易确定哪些表面遮挡了其他表面,例如,仅通过对表面进行深度排序,那么深度缓冲区是不必要的负担。在更真实的渲染场景中,特别是当表面可以相交时,再多的深度排序都不会产生正确的结果。深度缓冲区允许您以任何顺序绘制表面,并且仅保留最靠近屏幕的渲染。这实际上可以提高非平凡场景的性能。

    【讨论】:

      【解决方案2】:

      与 iPhone 无关,但深度缓冲区(或 z 缓冲区)将允许以任何顺序绘制面部,并且仍然可以正确渲染它们。

      阅读一些关于它的教程(使用谷歌),图像会更好地说明。例如,请参阅this tutorial

      深度缓冲区启用

      深度缓冲区禁用

      【讨论】:

        【解决方案3】:

        不幸的是,上面的那个项目充满了黑客——也让我感到困惑。

        如果您想要 3D,请使用深度缓冲区,启用深度测试,并且不要像该立方体示例中那样进行正面剔除。

        【讨论】:

        • 是的,这个立方体的例子就是我在午餐时一起拍东西时发生的事情。我把它留给别人清理它并给我发送一个更好的版本是一个挑战,但没有人有,我自己也没有重新审视它。
        • 布拉德,我希望您不要认为这是对您的应用程序的不当批评。我个人对 Objective-C、Cocoa Touch 或 OpenGL ES 2.0 都没有足够的信心来将你的立方体应用程序提升到我可以表现得明显优越的水平。我从那个应用程序、你的讲座和这里的 cmets 中学到了很多东西,我非常感谢你的努力。我只是想警告 OP 潜在的陷阱。
        猜你喜欢
        • 2018-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-02
        • 1970-01-01
        • 2012-04-12
        • 2016-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多