Core Animation から OpenGL ES 1.1 に変換する拡張現実 iPhone アプリがあります。Apple OpenGL テンプレートから変更されたコードを追加しました。
私の問題は、負の Z 軸 (ユーザーから離れた方向) に沿って移動すると、完全になくなるまで、3D オブジェクトがカメラ ビューに消えてしまうことです。私はいくつかの解決策を試しましたが、役に立ちませんでした。
私が決定したこと:
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 を適用して openGLView を z 方向 -500 および +500 に移動し、カメラ ビューにも同じことを行いました。また、上記のコードの zFar を 1.0f に変更しましたが、それでも z 位置 -2.0 で消えてしまい、意味がありません (z=1.0 で消えるべきではありませんか?)。
私の実験は、私が始めたときよりも私を混乱させました(これは通常、重要な部分が欠けていることを意味しますが、何がわからないのですか). ご協力いただきありがとうございます。