【问题标题】:OpenGL: far objects appearing on top of near objectsOpenGL:远物体出现在近物体之上
【发布时间】:2016-10-04 15:02:29
【问题描述】:

我正在尝试使用 iOS GLKit 制作一个快速演示,以使用源 CAD 文件使用 OpenGL 渲染零售商店地图。我能够在 2D 中渲染墙壁和过道,然后以编程方式添加一些人工深度来创建一系列立方体。从上往下看,所有这些看起来都很好,但我注意到当我打开地板时(z 值远低于过道和墙壁,其中一些对象实际上是在地板下渲染的:

...但是,如果您旋转模型,您会看到地板下方实际上没有任何东西,并且一些过道正在墙外渲染:

你可以在StoreMapGLKitViewController.m查看代码,这对我来说似乎很简单,但我确定我犯了某种 OpenGL 新手错误。

【问题讨论】:

标签: ios objective-c opengl-es glkit


【解决方案1】:

因此,当您弄乱 Z 值并且所有事物的 z = 0 时,我想您仍然可以看到您的一些墙壁和过道,但它们也会挂在底部 a少量。只要你不关心那个(它是一个演示,对),那么现在我应该没问题。

【讨论】:

  • 是的,这很好,但我应该无法从外面看到墙壁顶部的过道。
【解决方案2】:

最终没有设置深度缓冲区进行校正,因此深度测试没有做任何事情。添加下面的代码修复它。

GLKView *view = (GLKView *)self.view;
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;

【讨论】:

    猜你喜欢
    • 2021-12-05
    • 2019-10-07
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多