Vulkan:实例和设备扩展之间的区别?
Vulkan: Difference between instance and device extensions?
Vulkan 有 instance 和 device 扩展,但我无法在任何地方找到关于它们之间区别的任何信息。如果某物是设备扩展或实例扩展,这到底意味着什么?为什么 VK_KHR_external_memory a device extension and VK_KHR_external_memory_capabilities 是实例扩展?为什么它不是一个单一的、统一的扩展系统?
实例扩展和设备扩展的区别就是实例和设备的区别。
Vulkan 实例是用于设置设备的一段代码。它处理枚举 VkPhysicalDevice
s 和查询它们的属性,以及创建 VkDevice
s 本身的调用。
Vulkan 设备用于处理 Vulkan 渲染系统。
设备扩展与特定 VkDevice
对象的行为有关,该对象是在激活该扩展的情况下创建的。因此,该扩展无法描述 在设备创建 .
之前发生的事情的行为
例如,外部存储器对渲染系统有明显的影响。所以它是一个设备扩展。但是,特定的 VkPhysicalDevice
对象具有不同的属性,可以根据它们的外部存储器功能查询这些属性。在创建设备之前,您需要能够查询这些属性,因为如果设备不提供您需要的属性,那么制造设备就毫无意义。或者至少,使具有该扩展名的设备处于活动状态。
但是设备扩展管理 设备 的行为。如果您还没有设备是因为您还没有创建一个设备,因为您正在尝试决定是否要创建一个设备...您会怎么做?
嗯,该行为必须是实例扩展。它扩展了 Vulkan 的一部分,处理设备的设置,而不是管理设备本身的行为。
Vulkan 有 instance 和 device 扩展,但我无法在任何地方找到关于它们之间区别的任何信息。如果某物是设备扩展或实例扩展,这到底意味着什么?为什么 VK_KHR_external_memory a device extension and VK_KHR_external_memory_capabilities 是实例扩展?为什么它不是一个单一的、统一的扩展系统?
实例扩展和设备扩展的区别就是实例和设备的区别。
Vulkan 实例是用于设置设备的一段代码。它处理枚举 VkPhysicalDevice
s 和查询它们的属性,以及创建 VkDevice
s 本身的调用。
Vulkan 设备用于处理 Vulkan 渲染系统。
设备扩展与特定 VkDevice
对象的行为有关,该对象是在激活该扩展的情况下创建的。因此,该扩展无法描述 在设备创建 .
例如,外部存储器对渲染系统有明显的影响。所以它是一个设备扩展。但是,特定的 VkPhysicalDevice
对象具有不同的属性,可以根据它们的外部存储器功能查询这些属性。在创建设备之前,您需要能够查询这些属性,因为如果设备不提供您需要的属性,那么制造设备就毫无意义。或者至少,使具有该扩展名的设备处于活动状态。
但是设备扩展管理 设备 的行为。如果您还没有设备是因为您还没有创建一个设备,因为您正在尝试决定是否要创建一个设备...您会怎么做?
嗯,该行为必须是实例扩展。它扩展了 Vulkan 的一部分,处理设备的设置,而不是管理设备本身的行为。