2011-01-11 2 views
3

私はUIKitを使ってデバイスの回転を処理させています(iOSアプリケーションのUIViewControllershouldAutorotateToInterfaceOrientation:です)。OpenGLES 1.1でUIKitがデバイスの回転を処理させる - 実際にはそれはどんな場合でも遅いですか?

これまで、すべてのローテーション業務を手動で行うよりも時間がかかると言われてきました。しかし、iPad(iOS 4.2)でもiPod Touch 2G(iOS 4.2でも)のテストでは、これはサポートされていません。

私は、とにかく大きな違いがあると言われて少し驚きました.UpKitが動作するように見えるので、OpenGLESがページフリップを行う範囲がないように見えます。だから、-[EAGLContext presentRenderbuffer:]は、回転状態に関係なく、基本的に同じ時間を要するコピーをほとんど作らなければならない。他の回転(一般的な座標変換)のオーバーヘッドは、私も同様に無視できると思います。

それは私の想いですが、私はそれをバックアップするために私の嘘の目だけを持っています!そこで、UIKitでデバイスの回転を処理させると実際に大きな違いが生じるケースがありますか?もしそうなら、彼らは何ですか?回転を処理するために、View Controllerを使用して

+0

、私がしようとしてきたことがわかります私のOpenGL ES 1.1アプリケーションで動作するようにshouldAutorotateToInterfaceOrientationを取得してください。あなたはどこに関数を追加しますか? EAGLViewに追加しても何もしません。私はオートローテーションしたいツールバーを持っています。どんな提案も素晴らしいだろう。ありがとう。 – Davido

+1

それ自体の質問です。簡単に言うと、その関数はビューではなく、ビューコントローラに移動する必要があります。 'UIViewController'からビューコントローラを派生させます。オーバーロード ' - (void)loadView'を実行し、そこにあなたのウィジェットの作成物を置いてください。あなたのinit関数から ' - [UIViewController initWithNibName:bundle:]'を呼び出します。次に、あなたのアプリケーションデリゲートの 'applicationDidFinishLaunching'関数から、そこにウィジェットを作成する代わりにView Controllerを作成してください。システムのようなものは残りの部分をします。 –

答えて

1

は、次のデバイス上最高と推奨される解決策です:iPhone 3GS、iPhone 4、iPadの、iPadの2、iPod touchの3Gは、iPod touchの4Gは、iOS 4.2以降を実行しています。

アプリケーションが古いiOSデバイスで実行されている場合は、OpenGL ESを使用して直接ローテーションを実行する必要があります。偶然に、これが推奨されるデバイスは、OpenGL ES 2.0をサポートするすべてのデバイスであり、したがってOpenGL ES 1.1パイプラインがシェーダを使用して実装されているすべてのデバイスであるです。

あなたは非ES 2.0のデバイス、またはこの回答の確認に回転を処理する方法についてさらに詳しく知りたい場合は、私はちょうど思っていたhere.

関連する問題