我在Unity中完成了一个3D环境,我不想在Qt(QML)中使用Item
。我尝试了一些不同的路径,但没有一个证明是足够有效的,或者我无法让它工作。
我目前的工作解决方案是每帧执行以下操作
ReadPixels
(GPU)的RenderTexture
来获得常规Texture
(RAM)。QImage
并保存以供日后使用。QQuickFramebufferObject::Renderer
的渲染功能中,使用glTexImage2D
将图像渲染为活动纹理。显然,这不是最佳解决方案。这可能会执行10 fps,纹理大小为128x64(用于测试)。我的理解是瓶颈是从gpu和后面传输数据。
在我最近的尝试中,我尝试使用RenderTexture
获取renderTexture.GetNativeTexturePtr()
的ID。然后在Qt我尝试通过glGetTexImage
获取像素数据,但我在数据中不断得到0。稍后使用glDrawPixels
时,Qt应用程序崩溃。
所以现在我的问题是,有人知道是否有可能在进程之间共享纹理,如果是,如何?