【问题标题】:How do you use glFrustrum in OpenGL ES1 on iPhone你如何在 iPhone 上的 OpenGL ES1 中使用 glFrustrum
【发布时间】:2009-12-23 23:26:22
【问题描述】:

所以我正在使用 Xcode 3.2.1 并尝试制作一个 iPhone OpenGL ES1 项目。 opengl 项目的默认模板没问题,但我一直在尝试拆分代码,因此在 drawView() 调用中并非每帧都完成所有操作。

我有一个单独的 setupRC 方法来设置光照、打开深度测试、打开剔除并设置清晰的颜色。这是在 EAGLView 的 init 上调用的,它工作得很好。

我已经调用了 glViewport() 和 glFrustrum() 并将它们放在 ES1Renderer.m 文件中 resizeFromLayer() 方法的末尾。当应用程序启动和应用程序按应有的大小调整大小时,这会受到影响。

现在的问题是截锥体的距离似乎搞砸了,因为我所有的对象都被剪掉/剪掉了。我尝试调整相机位置和角度,但所有对象仍然被剪切/剪切。我将距离从 1000.0f 增加到 30000.0f 并且仍然得到相同的结果。疯狂的是,如果我在 drawView() 中同时调用 glViewport() 和 glFrustrum() 调用,每帧一切看起来都正确。没有任何东西被剪裁,看起来我想要它。从我一直在阅读的所有内容中,只需要在创建窗口 / 并调整大小时调用视锥体和视口调用,但是如果我不在项目中的每一帧都调用它,它就不起作用。有什么想法吗?

提前致谢

【问题讨论】:

    标签: iphone opengl-es frustum


    【解决方案1】:

    我想知道您是否会在开始绘画之前在某处进行一些额外的翻译?也许您可以确保在开始绘制所有内容之前执行 loadIdentity(),以确保您从您认为的位置开始。

    【讨论】:

      【解决方案2】:

      在尝试自己在 XCode 的 OpenGL iphone 模板中解决这种截锥体/视口情况时,有助于深入了解它的一个资源是:

      http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html

      【讨论】:

        猜你喜欢
        • 2015-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多