【问题标题】:How can I draw a cube with a depth buffer in OpenGL ES 2.0?如何在 OpenGL ES 2.0 中绘制带有深度缓冲区的立方体?
【发布时间】:2010-12-12 07:08:24
【问题描述】:

我一直在尝试使用 OpenGL ES 2.0 和深度缓冲区来绘制一个立方体,但没有成功。

是否有任何可用的示例可供我比较,以了解我哪里出错了?

【问题讨论】:

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


    【解决方案1】:

    作为最近一堂课的示例,我创建了一个示例应用程序,它使用 OpenGL ES 1.1 和 2.0 绘制纹理立方体,可以从 here 下载。不幸的是,该应用程序不使用任何深度缓冲区。

    我创建了一个更复杂的 OpenGL ES 2.0 应用程序,它确实使用了一个 here,因此您可以将代码从这个应用程序拉到另一个应用程序来完成您想要的操作。

    【讨论】:

    • 我没有重新检查,但在立方体示例中,你还有那个(抱歉)丑陋的正面剔除技巧吗?再加上我自己的一些选择错误和技巧,让我很困惑。
    • @fzwo - 是的,我愿意(至少对于 OpenGL ES 1.1 实现而言)。我从来没有坐下来想出正确的方法来处理我用来构建立方体的索引三角形条的交替绕组。正面剔除开关是 Apple 工程师提出的快速修复建议,所以我把它留在了那里。此外,我还没有更正此示例中的所有纹理索引。如果您有任何建议,我会全力以赴。
    • @Brad:我已经拿走了你的立方体并在一个严格的 GLES2 3D 程序的原型中使用它们(当然是有归属的)。它们似乎为我正确渲染(没有剔除和背面剔除),而且我也尝试并遵循了你如何处理三角形索引,并且该设置对我来说也很合适。我目前无法访问 Xcode,所以我现在无法真正评论您的项目。无论如何,感谢您的 iTunes U 课程 - 这是 GLES2 初学者可以使用的非常非常少的资源之一。
    • 当我从头开始创建项目并尝试使用 GLProgram 加载着色器时,它们根本无法加载。我必须做一些微妙的事情才能将它们正确地包含在项目中吗?如果我签入 .app 文件,则 .fsh 和 .vsh 文件不存在。有什么想法吗?
    • @sharvey - 您需要确保 Xcode 将您的着色器文件视为资源,而不是要编译的代码。确保着色器列在目标中的 Copy Bundle Resources 构建阶段,而不是 Compile Sources 之一。这样,它们将被复制到您的应用程序包中并在运行时使用。
    猜你喜欢
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    相关资源
    最近更新 更多