Vulkan API — урок 6. Список поддерживаемых расширений

Пополнил список полезных ссылок для начинающих геймдевелоперов на соответствующей странице (Что откуда качать и полезные ссылки).

Что бы получить список поддерживаемых расширений перед созданием instance есть функция vkEnumerateInstanceExtensionProperties. Она принимает указатель на переменную, которая хранит количество расширений и массив VkExtensionProperties, который хранить детали расширений. Так же имеется необязательный первый параметр, который позволяет нам фильтровать расширения по указанному полю, что мы пока что проигнорим.

Для выделения массива для хранения деталей расширений, сначала необходимо выяснить их количество. Запрос количества расширений выглядит вот так:

uint32_t extensionCount = 0;
vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr);

Теперь создаем массив для хранения деталей расширений (include <vector>):

std::vector<VkExtensionProperties> extensions(extensionCount);

 И запрашиваем детали расширений:

vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, extensions.data());

Кажданя струткра VkExtensionProperties содержит имя и версию расширения. Мы мы можем просмотреть их при помощи простейшего цикла («\t» это отступ):

std::cout << "available extensions:" << std::endl;

for (const auto& extension : extensions) {
    std::cout << "\t" << extension.extensionName << std::endl;
}

 Вы можете добавить этот код в функцию VkExtensionProperties, если вы хотите получить некоторые детали о поддержке Вулкан.

Main Admin

One Comment

  1. Последний абзац в оригинале звучит как-то так:
    «Вы можете добавть этот код в функцию `createInstance`, если вам понадобится получить дополнительную информацию о поддержке Vulkan. В качестве домашнего задания попробуйте написать функцию, которая проверяет наличие расширений, возвращаемых функцией glfwGetRequiredInstanceExtensions, в списке поддерживаемых
    системой расширений.»

    Код этого урока: https://vulkan-tutorial.com/code/instance_creation.cpp

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *