作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一些关于 OpenGL-Vulkan 内存交换的帮助。
我已经找到了这个话题
How to render to OpenGL from Vulkan?
但这不是我所需要的。我不希望 Vulkan 分配和导出内存。我想将 OpenGL 内存导入 Vulkan,创建 Vulkan Image 并将其绑定(bind)到导入的内存。
我的问题是,实际上是否有可能获得可与 vk::ImportMemoryWin32HandleInfoKHR 一起使用的“HANDLE”(就 WinOS 而言)。
最佳答案
据我所知,目前还没有允许这样做的 OpenGL 扩展。这也有点道理,因为 OpenGL 分配对象的内存语义非常模糊,而且数据实际上可能到处都是。当您在 OpenGL 中创建纹理、缓冲区等时,它是完全开放的,最终分配内存的时间、方式和位置。
这在 Vulkan 中非常不同,内存管理是显式的,一旦创建,您就拥有“完美”的知识。也就是说,为什么可以简单地将内存“导入”到 OpenGL 对象中;就 OpenGL 驱动程序而言,它只是获取内存的另一种方式,只是这种方式不必担心脏细节。
最后,如果您使用 Vulkan 或 OpenGL 分配内存,它并没有实际的区别。只需使用 Vulkan 分配,然后导入 OpenGL。您仍然可以从 OpenGL 写入内存,即也可以将其用作渲染缓冲区或帧缓冲区附件的纹理。
关于OpenGL Vulkan 互操作性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54801580/
我是一名优秀的程序员,十分优秀!