DND*_*DND 5 opengl interop vulkan
我需要 OpenGL-Vulkan 内存交换方面的帮助。我已经找到了这个主题 如何从 Vulkan 渲染到 OpenGL? 但这并不是我所需要的。我不希望 Vulkan 分配和导出内存。我想将 OpenGL 内存导入到 Vulkan,创建 Vulkan Image 并将其绑定到导入的内存。
我的问题是,实际上是否有可能获得可与 vk::ImportMemoryWin32HandleInfoKHR 一起使用的“HANDLE”(就 WinOS 而言)。
据我所知,目前还没有 OpenGL 扩展可以实现这一点。这也是有道理的,因为 OpenGL 分配对象的内存语义非常模糊,而且数据实际上可能遍布各处。当您在 OpenGL 中创建纹理、缓冲区等时,它最终会在何时、如何以及在何处分配其内存,这是完全开放的。
这在 Vulkan 中非常不同,其中内存管理是明确的,一旦创建,您就拥有关于它的“完美”知识。这就是为什么可以简单地将内存“导入”到 OpenGL 对象中;就 OpenGL 驱动程序而言,这只是访问内存的另一种方式,只是这种方式不必关心脏细节。
最后,如果您使用 Vulkan 或 OpenGL 分配内存,并没有什么实际区别。只需用Vulkan分配,然后导入OpenGL。您仍然可以从 OpenGL 写入内存,即也将其用作渲染缓冲区或帧缓冲区附件的纹理。