Разница между экземплярами и расширениями устройств - это разница между экземплярами и устройствами.
Экземпляр Vulkan - это фрагмент кода, который используется для настройки устройств. Он имеет дело с перечислением VkPhysicalDevice
s и запросом их свойств, а также с призывом создать VkDevice
s сам.
Устройство Vulkan предназначено для работы с системами визуализации Vulkan.
Расширения устройства относятся к поведению конкретного VkDevice
объекта, который был создан с активированным этим расширением. Таким образом, это расширение не может описывать поведение вещей, которые происходят до создания устройства .
Например, внешняя память имеет очевидные последствия для системы рендеринга. Так что это расширение устройства. Тем не менее, конкретные VkPhysicalDevice
объекты имеют различные свойства, которые могут быть запрошены в отношении их функциональности внешней памяти. Вам нужно иметь возможность запросить эти свойства до того, как вы создадите устройство, потому что, если устройство не предоставляет необходимые свойства, нет никакого смысла создавать устройство вообще. Или, по крайней мере, сделать устройство с этим расширением активным.
Но расширения устройства определяют поведение устройства . Если у вас еще нет устройства, потому что вы его не создали, потому что вы пытаетесь решить, создавать ли его вообще ... что вы делаете?
Ну, это поведение должно быть расширением экземпляра. Он расширяет часть Vulkan, которая имеет дело с , настроенным для устройств, но не управляет поведением самого устройства.