我为 iOS 创建了一个 Air Native Extension,它打开了一个带有 GLKView 的 GLKViewController 来渲染一些 3D 内容,这一切都很好。当 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,然后在视图控制器关闭时重置它,但这不起作用。