你如何在iPhone上的OpenGL ES1中使用glFrustrum

时间:2009-12-23 23:26:23

标签: iphone opengl-es frustum

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

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

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

现在的问题是,截头曲目似乎很混乱,因为我的所有物体都会被剪掉/剪掉。我尝试调整相机的位置和角度,仍然切割/剪裁所有物体。我将远离1000.0f增加到30000.0f仍然得到相同的结果。令人抓狂的是,如果我在drawView()中调用glViewport()和glFrustrum()调用,每一帧都看起来正确。什么都没有剪裁,看起来我想要它。从我一直在阅读的frustrum和viewport调用开始,只需要在窗口调整和调整大小时调用它,但是如果我不在项目的每一帧中调用它,它就不起作用。有什么想法吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

为了让我自己在XCode的OpenGL iphone模板中解决这个截头/视口情况,一个有助于深入了解它的资源是:

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

答案 1 :(得分:0)

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