将GPUImage与另一个EAGLContext一起使用

詹姆斯·安德鲁斯

我正在尝试GPUImageOpenGL基于的照片编辑应用程序一起使用问题在于,这两个OpenGL上下文似乎冲突,这意味着它们GPUImage无法正常运行。

我尝试在使用之前添加此内容GPUImage

[EAGLContext setCurrentContext:[GPUImageContext sharedImageProcessingContext].context];

但这没有帮助。我看到的问题是,当我尝试将过滤器应用于图像时,它将过滤器应用于先前过滤的图像,即

1)过滤图像1-输出图像2

2)重新加载我的OpenGL图像画布

3)过滤图片2-输出图片2(应该是图片3,即图片2的过滤后的版本)

在应用过滤器的前三次会发生这种情况,然后它才能正常工作。有没有一种方法可以重置GPUImage上下文?还是要处理GPUImage上下文单例并重新开始?

布拉德·拉森(Brad Larson)

首先,您需要确保基于OpenGL的绘图应用程序将其场景渲染为纹理,并且您正在使用纹理输入(如果传递到GPUImage中)。GPUImage需要使用纹理,而不是渲染缓冲区本身。如果要从GPUImage中退出,请使用纹理输出及其渲染回调块来了解渲染何时完成。

要在GPUImage和另一个OpenGL上下文之间共享内容,您需要使GPUImage的上下文与您自己的OpenGL上下文属于同一共享组。最好不要直接共享GPUImage上下文,因为它在后台调度队列内部执行操作,并且如果在您自己的代码中进行渲染,则不能保证线程安全。

iOS上的CubeExample示例应用程序演示了如何针对OpenGL ES执行此操作。特别是,它使用以下行:

    context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:[[[GPUImageContext sharedImageProcessingContext] context] sharegroup]];

为在那里用于非GPUImage渲染的OpenGL ES上下文设置共享组。不过,我必须查找Mac和台式机OpenGL的等效功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将“ this”与另一个外部函数一起使用

将gunicorn与asyncio一起使用时,如何满足另一个请求?

Bootstrap 4.0。按钮不能与另一个DIV一起使用

将FCM与另一个数据库一起使用

将StencilJS组件与另一个StencilJS组件一起使用

将sklearn RFE与另一个软件包中的估算器一起使用

如何将另一个AWS终端节点与另一个AWS区域一起使用?

使用EF迁移将一列与值一起从一个表移动到另一个表

SWI Prolog-将谓词与另一个谓词一起使用

在React Typescript中是否可以将组件prop接口与另一个prop一起使用?

CSS定位-如何将一个输入与另一个输入放在一起

无法使用和另一个And Or一起使用条件api构建查询

将MergeMap与从另一个可观察到的数据数组一起使用-RxJs Angular

Android-将不确定的ProgressBar与另一个线程一起使用

将另一个网站与Zend网站一起放置

如何与Bundler一起使用另一个宝石来源

使JPanel的paintComponent元素与其中的另一个JPanel一起使用

使用视图将另一个表中的最新项的各个部分联接在一起

如何将LIKE语句与另一个字段中的多个值一起使用?

当将Ember sortBy方法与多个参数一起使用时,如何反转一个参数而不是另一个参数?

将“ LoadfromCollection”与包含另一个列表的列表一起使用

将$ geoWithin与另一个查询的结果一起使用

将Andy Lutomirski的Arch Linux NVMe补丁与另一个发行版一起使用

将一个地图与另一个索引地图存储在一起

运行与默认与RemoteWebDriver实现一起使用的另一个firefox.exe

Bash:将函数与管道一起用作另一个函数的参数

将STDIN与另一个使用自定义列分隔符的文件一起使用?

将 CASE WHEN 与另一个 CASE WHEN 一起使用的 MySQL 解决方案

RXJS 如何在另一个中使用一个 observable 的结果(然后将这两个结果一起处理)