いくつかの 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 を保存してから、ビュー コントローラを閉じるときにリセットしようとしましたが、うまくいきませんでした。