【问题标题】:cocos2d OpenGL error 0x0502 in -[EAGLView swapBuffers]cocos2d OpenGL 错误 0x0502 在 -[EAGLView swapBuffers]
【发布时间】:2012-04-27 00:11:22
【问题描述】:

我在我的 cocos2d 项目中实现了GPUImage framework,GPUImage 框架是一个 BSD 许可的 iOS 库,可让您将 GPU 加速的滤镜和其他效果应用于图像、实时摄像机视频和电影。

当我调用任何一个 GPUImage 过滤器时,我得到“ cocos2d OpenGL error 0x0502 in -[EAGLView swapBuffers] ”错误。

您知道在这种情况下可能会出现什么问题吗?

谢谢和问候,普拉卡什。

【问题讨论】:

  • 0x0502 代表GL_INVALID_OPERATION。您是否尝试将 GPUImage 中的纹理与 cocos2d 一起使用?默认情况下,这两个将具有不同的 OpenGL ES 上下文,因此您将无法使用另一个中的纹理,除非您在上下文之间设置共享。我不熟悉 cocos2d 以及它如何进行上下文初始化,但不知何故你需要在 GPUImage 和 cocos2d 上下文之间建立一个共享组。
  • @BradLarson 仅在我的 coco2d 类中使用这两行 ------ GPUImageToonFilter *stillImageFilter2 = [[GPUImageToonFilter alloc] init]; image = [stillImageFilter2 imageByFilteringImage:image];-------- 执行这两行后出现此错误

标签: iphone ios image image-processing cocos2d-iphone


【解决方案1】:

我不知道您的代码在做什么,但我所看到的是,如果应用程序的方向从正常方向发生变化,有时会出现交换缓冲区问题。尝试在使用您的代码之前和之后打印主视图的大小代码。

【讨论】:

    【解决方案2】:

    我碰巧遇到了同样的问题。我发现以下帖子很有用: iOS and multiple OpenGL views

    在我的情况下,cocos2d 文件没有必要的“setCurrentContext”命令,所以我将它添加到 CCEAGLView-ios.mm 中。它解决了我的问题。

    (void) layoutSubviews
    {
    [renderer_ resizeFromLayer:(CAEAGLLayer*)self.layer];
    size_ = [renderer_ backingSize];
    
    [EAGLContext setCurrentContext: context_];
    cocos2d::Size size;
    size.width = size_.width;
    size.height = size_.height;
    
    cocos2d::Director::getInstance()->drawScene();
    }
    

    【讨论】:

      猜你喜欢
      • 2011-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多