在Unity和Qt之间共享渲染纹理

时间:2017-02-07 16:19:43

标签: qt opengl unity3d

我在Unity中完成了一个3D环境,我不想在Qt(QML)中使用Item。我尝试了一些不同的路径,但没有一个证明是足够有效的,或者我无法让它工作。

我目前的工作解决方案是每帧执行以下操作

  1. 在Unity中,使用ReadPixels(GPU)的RenderTexture来获得常规Texture(RAM)。
  2. 编码为JPG并通过TCP套接字发送bytearray。
  3. 在Qt中,从数据中实例化QImage并保存以供日后使用。
  4. QQuickFramebufferObject::Renderer的渲染功能中,使用glTexImage2D将图像渲染为活动纹理。
  5. 显然,这不是最佳解决方案。这可能会执行10 fps,纹理大小为128x64(用于测试)。我的理解是瓶颈是从gpu和后面传输数据。

    在我最近的尝试中,我尝试使用RenderTexture获取renderTexture.GetNativeTexturePtr()的ID。然后在Qt我尝试通过glGetTexImage获取像素数据,但我在数据中不断得到0。稍后使用glDrawPixels时,Qt应用程序崩溃。

    所以现在我的问题是,有人知道是否有可能在进程之间共享纹理,如果是,如何?

0 个答案:

没有答案