iPhone の OpenGLES でズーム効果を作成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/103537

  •  01-07-2019
  •  | 
  •  

質問

私は一緒にハッキングしている OpenGL ES ゲームを持っています。その一部には、大きな「地図のような」領域を見て、その一部をダブルタップして「ズームイン」することが含まれます。OpenGL ES を使用してこの効果を提供するにはどうすればよいでしょうか (マップのさまざまな部分をズームインする必要がある場合があると仮定します)。

glScale と glOrtho について聞いたことはありますが、openGL の世界全体が私にとって非常に初めてなので、実際にどのように機能するかはわかりません。

役に立ちましたか?

解決

あなたが説明した 2D ズームは、CoreAnimation を使用するとより適切に実現できる可能性があります。NSView (および NDA を取得した iPhone 版) は、フレームを変更すると暗黙的なアニメーションを提供します。この場合に必要なのは、フレームのorigin.xとorigin.y、size.widthとsize.heightをそのような値に設定して、ビューを画面より大きくすることだけです。これを実行し、アニメーションを開始してコミットするための適切な呼び出しでラップすると、ズーム アニメーションが無料で得られます。Core Animation は、アニメーションの舞台裏で OpenGL を使用します。

ただし、これを OpenGL で行う必要があると思われる場合は、私が次の場所で行ったちょっとした記事を提案してもいいでしょうか? http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es?私はの著者です 分子, 、iPhone 用の無料の 3D 分子ビジュアライザーですが、そのプロジェクトを開始するまで、私は OpenGL ES について何も知りませんでした。3 週間後、App Store にリリースと同時に登場しました。

OpenGL 呼び出しは非常に単純ですが、それを取り巻く数学が頭を悩ませる可能性があります。オブジェクトのズームインは実際には非常に簡単で、カメラを移動するか、オブジェクトを実際に物理的に拡大縮小することで実行できます。分子の場合は、glScalef(x,y,z) 関数を使用してオブジェクトをスケーリングする方法を選択しました。ここで、x、y、z はモデル オブジェクトに適用するスケール係数です。スケーリングは段階的に行います。つまり、(glLoadIdentity() を使用して) レンダリングされた各フレームの開始時に変換行列をリセットせず、ユーザー入力に基づいてそれを少しスケールするだけです。ユーザーが指を 5% 離すと、スケールが 5% 増加します。

繰り返しになりますが、あなたが説明した 2D ズームには Core Animation をお勧めしますが、OpenGL ES で同じ結果を達成するのはそれほど難しいことではありません。

他のヒント

敬意を表します。答えは、OpenGL の基本を学ぶのに数日かかることです。そのための場所は、ここよりもネット上にはるかにあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top