OpenGL Vulkan互操作性

时间:2019-02-21 07:35:32

标签: opengl interop vulkan

我需要有关OpenGL-Vulkan内存交换的一些帮助。 我已经找到了这个话题 How to render to OpenGL from Vulkan? 但这不是我所需要的。我不希望Vulkan分配和导出内存。我想将OpenGL内存导入Vulkan,创建Vulkan Image并将其绑定到导入的内存。

我的问题是,实际上是否有可能获得可以与vk :: ImportMemoryWin32HandleInfoKHR一起使用的“ HANDLE”(就WinOS而言)。

1 个答案:

答案 0 :(得分:3)

据我所知,还没有OpenGL扩展名,可以允许这样做。这也是有道理的,因为OpenGL分配的对象的内存语义非常模糊,并且数据实际上可能遍布整个地方。当您在OpenGL中创建纹理,缓冲区等时,它是完全开放的,最终将在何时,如何以及在何处分配内存。

这在Vulkan中是非常不同的,在Vulkan中,内存管理是显式的,一旦创建,您就具有“完善”的知识。这就是为什么可以将内存简单地“导入”到OpenGL对象中的原因;就OpenGL驱动程序而言,这是进入内存的另一种方式,只是这种方式不必担心脏的细节。

最后,如果使用Vulkan或OpenGL分配内存,这并没有实际的区别。只需分配Vulkan,然后导入OpenGL。您仍然可以从OpenGL写入内存,也可以将其用作渲染缓冲区或帧缓冲区附件的纹理。