我认为它可以使用 Vulkan 的外部内存扩展来工作,方法是在进程 A 中分配内存,创建该内存的句柄,然后通过共享内存将该句柄传递给进程 B。
但这似乎是不可能的,因为 HANDLE 实际上只是一个 void* 并且对于不同的进程存在不同的内存映射,因此指针/HANDLE 实际上不能在进程之间传输。
有没有什么方法可以以某种方式获取句柄并在不同的进程中重新创建 GL 纹理/VK 图像,而无需复制所有图像的像素数据(例如使用 PBO 时)?
我在哪里可以找到 Vulkan 的 C++ 规范(与 Khornos 页面上的官方 C 规范相同),描述特定的 Vulkan api 原语和函数?它甚至存在吗(我试图找到它但没有成功)?
就我个人而言,我甚至在 C++ 中使用 C api,因为我已经习惯了它的风格,它完全符合我的需求(冗长,但你看到了一切),但我必须通过其他人使用 C++ api 编写的代码。通常 Vulkan C++ api 只是构建在 C api 函数调用上的一些语法糖,但有时深入 vulkan.hpp 并试图弄清楚发生了什么真的很烦人。
Vulkan 规范中是否指定了表示功能(vkGetPhysicalDeviceSurfaceSupportKHR返回 true)仅与具有位标志的系列相关,VK_QUEUE_GRAPHICS_BIT或者传输独占系列也可能返回 true?
我可能对 Vulkan 教程中的命名有点困惑(https://vulkan-tutorial.com/Drawing_a_triangle/Presentation/Window_surface#page_Creating-the-presentation-queue),但我认为名为presentQueue和presentFamily的东西是事实上(另一个或相同的)图形队列和图形族,它与组的队列族无关VK_QUEUE_TRANSFER_BIT(如果队列族不包含这两个标志)。
我的假设是正确的还是我误解了什么?