我有一个增强现实 iPhone 应用程序,我正在将其从 Core Animation 转换为 OpenGL ES 1.1。我添加了从 Apple OpenGL 模板修改的代码。
我的问题是我的 3D 对象在沿负 Z 轴(远离用户)平移时,似乎消失在相机视图中,直到完全消失。我尝试了几种解决方案,但无济于事。
我已经确定:
使用此处 Jeff Lamarche 博客中的 3D 二十面体,对象从 0,0,0 开始,然后随着 z 坐标的减小平移。当 z 值达到 -2.0f 时,对象就消失了。它似乎消失在相机视图后面。这就是我设置我的视锥体和视口的方式(与 Apple 的代码相同)
glMatrixMode(GL_PROJECTION); 大小 = zNear * tanf(DEGREES_TO_RADIANS(fieldOfView) / 2.0);
//Grab the size of the screen
CGRect rect = self.bounds;
glFrustumf(-size, size,
-size / (rect.size.width / rect.size.height),
size / (rect.size.width / rect.size.height),
zNear, zFar);
glViewport(0, 0, rect.size.width, rect.size.height);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
我尝试过的:相机视图是主视图,其他几个视图作为子视图添加到其中,包括 openGLView。出于测试目的,我已将这些观点注释掉。我已应用 CATransforms 在 z 方向 -500 和 +500 上移动 openGLView,并对相机视图执行相同操作。我也把上面代码中的zFar改成了1.0f,在-2.0的z位置还是消失了,没有意义(不应该是在z=1.0的时候消失吗?)
我的实验让我比开始时更加困惑(这通常意味着我错过了一个关键部分,但我不知道是什么)。谢谢你的帮助。