0

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

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

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

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

提前致谢

4

2 回答 2

0

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

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

于 2010-06-08T07:53:57.023 回答
0

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

于 2010-06-08T08:58:38.220 回答