繁体   English   中英

带有OpenGLES的iOS AIR本机扩展导致应用冻结

[英]iOS AIR Native Extension With OpenGLES Causes App To Freeze

我为iOS创建了一个Air Native Extension,它打开了一个GLKViewController,里面带有GLKView来渲染一些3D内容,一切正常。 关闭ViewController后,AIR App将停止渲染。 互动仍然有效(因此应用程序未冻结),但是渲染已在本机扩展的视图控制器打开之前的最后一帧停止。

这是我的视图控制器的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,然后在关闭视图控制器时将其重置,但这没有用。

为了解决这个问题,我必须在设置自己的Flash之前保存Flash的EAGLContext,然后在完成绘制/设置上下文后恢复Flash的EAGLContext。 这使Flash可以继续绘制而无需知道我的视图控制器也在绘制。 我最终使用旧的EAGLView和自定义视图控制器执行此操作,因为尚不清楚GLKView设置上下文的位置。

当然,Flash最好在尝试绘制框架之前先设置上下文本身,就像Apple建议的那样!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM