【发布时间】:2019-04-21 16:39:21
【问题描述】:
好的,所以我最近一直在做一个 Vulkan 项目,我遇到了一个“队列家族”。这是什么?
我尝试在 Windows 调试器中查找该值,但它只是一个看起来很奇怪的内存地址。
pci 只是 VkDeviceCreateInfo 的一个实例。
pci.pQueueCreateInfos->queueFamilyIndex;
【问题讨论】:
好的,所以我最近一直在做一个 Vulkan 项目,我遇到了一个“队列家族”。这是什么?
我尝试在 Windows 调试器中查找该值,但它只是一个看起来很奇怪的内存地址。
pci 只是 VkDeviceCreateInfo 的一个实例。
pci.pQueueCreateInfos->queueFamilyIndex;
【问题讨论】:
队列族定义了硬件支持的多个队列的属性。
当您实例化一个物理设备时,您可以使用vkGetPhysicalDeviceQueueFamilyProperties 枚举它支持的队列,它返回一个VkQueueFamilyProperties 的数量。然后,您可以查询结果以找到您的应用程序所需的队列,例如VkQueueFlag.VK_QUEUE_GRAPHICS_BIT 用于渲染。创建逻辑设备时,您为所需的队列构建了多个VkDeviceQueueCreateInfo,每个都包含适当的队列族索引。
更多详情:Vulkan tutorial
请注意,在您的代码中,
pQueueCreateInfos应该指向VkDeviceQueueCreateInfo的数组,并且不是队列族索引。
您在调试器中查看的值确实只是一个内存地址,即一个“不透明”句柄。几乎每个 Vulkan '对象' 都是一个句柄。
【讨论】: