1

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

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

4

2 に答える 2

2

あなたが説明する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分子ビジュアライザーであるMoleculesの著者であり、そのプロジェクトを開始する前はOpenGLESについて何も知りませんでした。3週間後、発売時にAppStoreに掲載されました。

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

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

于 2008-09-20T16:19:52.603 に答える
0

失礼ながら、答えは OpenGL の基本を学ぶのに数日かかることです。ネット上には、ここよりもはるかに適した場所があります。

于 2008-09-19T16:45:37.107 に答える