0

いくつかの 3D コンテンツをレンダリングするために GLKView を内部に持つ GLKViewController を開く iOS 用の Air Native Extension を作成しましたが、これはすべて正常に動作します。ViewController が閉じられると、AIR アプリはレンダリングを停止します。インタラクションは引き続き機能しますが (アプリはフリーズしません)、ネイティブ拡張のビュー コントローラーが開く前の最後のフレームでレンダリングが停止しました。

これは、ビュー コントローラーの viewDidLoad メソッドのコードです (これがサブクラスのすべてです)。

GLKView* view = (GLKView*)self.view;
if( view.context == nil )
{
    EAGLContext *context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
    if (!context)
    {
        NSLog(@"Failed to create ES context");
        return;
    }
    view.context = context; //Removing this fixes flash!
}

この行にコメントを付けるview.context = contextと、Flash は正常にレンダリングを続行します (しかし、明らかに、コンテキストがなくなり、レンダリングできません)。

GLKView が現在のコンテキストを設定し、それをリセットしていない場合、Flash は EAGLContext を失っていると思います。これを修正または回避する方法はありますか?

ビュー コントローラを開く前に現在の EAGLContext を保存してから、ビュー コントローラを閉じるときにリセットしようとしましたが、うまくいきませんでした。

4

1 に答える 1