gpt4 book ai didi

java - 我可以在 Android 的 2 个 OpenGL 上下文之间共享外部纹理吗

转载 作者:太空狗 更新时间:2023-10-29 14:06:35 27 4
gpt4 key购买 nike

我正在创建 2 个线程。每个线程都有自己的 EGL 上下文。一个线程是原生的,我将在其中渲染到纹理,另一个线程是在 Java 中,我想从该纹理中采样并渲染到屏幕/编码器(无关紧要)。我不能让它工作。我试过在任一线程上生成纹理。我注意到纹理 ID 在两个线程上都是重复的(我有其他不打算共享的纹理)。

我的问题是,是否可以在 2 个线程(和上下文)之间共享纹理?

编辑:解决方案

多亏了 Andon 和一些谷歌搜索,我才能够让它工作。我在线程一上用 Java 创建了一个上下文,并调用了 eglGetCurrentContext() 来获取 C++ 中的 EGLContext。后来,我在第二个线程上用 C++ 创建了第二个上下文:

eglCreateContext(mEglDisplay, mEglConfig, sharedContext, contextAttribs);

其中 sharedContext 是第一个上下文。

最佳答案

是的,上下文之间的资源共享是可能的。

虽然共享上下文中的命令流不同步;如果您在一个线程中上传数据并在另一个线程中使用它,您必须格外小心,确保上传实际上首先完成(glFinish (...),然后是您自己的一些同步结构,例如信号量,会做)。

现在,百万美元的问题 - 您是否可以控制这些上下文的创建?这是在 EGL 中进行资源共享所必需的。你只需要自己创建一个;如果您已经获得了另一个,您可以在创建第二个时将其用作您的共享上下文。

关于java - 我可以在 Android 的 2 个 OpenGL 上下文之间共享外部纹理吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31954439/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com