Vulkan API — урок 12. Логическое устройство и очереди (+листинг)

Предисловие Эти две темы разделить крайне тяжело, и в принципе не обязательно (во всяком случае во время начального обучения Vulkan’у), потому постараюсь их изложить в наиболее простои и кратком виде, а уже со временем говорить о второстепенных деталях (которые вы… Continue Reading

Vulkan API — урок 11. Семейства очередей (+листинг)

Семейства очередей – некая возможность для разработчиков железа при необходимости разбить выполняемые задачи на типы, тем самым оптимизировав работу этих самых операций. Конечно далеко не факт, что нужные нам операции (например рендеринг и вывод) будут выполняться разными семействами очередей, но… Continue Reading

Vulkan API — урок 10. Минимальные проверки видеокарты

Для оценки устройства запросим несколько детали. Базовые параметры устройства, на подобии его имени, типа и поддерживаемой версии Vulkan’a можно получить используя vkGetPhysicalDeviceProperties. VkPhysicalDeviceProperties deviceProperties; vkGetPhysicalDeviceProperties(physicalDevice, &deviceProperties); Проверка опциональных фичь, на подобии компресии текстур, 64 bit floats и рендеринга нескольких окон (используется в… Continue Reading

Vulkan API — урок 9. Выбор физического устройства

После инициализации библиотеки Vulkan при помощи VkInstance, нам нужно найти и выбрать видеокарту, которая поддерживает нужный нам функционал. Вообще мы можем выбрать сколько угодно видеокарт и нагрузить их все, но в обозримом будущем до этого дело не дойдет. Добавим функцию… Continue Reading

Vulkan API — урок 8. Сообщения от Validation layers (+листинг)

К сожалению недостаточно только лишь включить слои, без дополнительных настроек сообщения от слоев до нас не дойдут. Для получения этих сообщений мы должны настроить callback, что требует расширения  VK_EXT_debug_report. Для начала создадим функцию getRequiredExtensions, что будет возвращать нам требуемый список расширений, зависящий… Continue Reading

Vulkan API — урок 7. Validation layers (слои валидации, слои проверок)

Что такое validation layers? Vulkan API построен вокруг идеи минимального использования драйверов и иных, впустую нагружающих железо, средств. В том числе вулкан содержит минимум проверок на ошибки по умолчанию. Даже простейшие ошибки, такие как установка неправильного значения перечисления или передача нулевого указателя… Continue Reading

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

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

Vulkan API — урок 5. Создание объекта

В самом начале необходимо инициализировать библиотеку Вулкан при помощи создания instance (Вообще instance — экземпляр класса, объекта, какой-то образец или пример. Но впредь я буду использовать английское слово, т.к. если вы еще не изучали англоязычную литературу — рано или поздно придется,… Continue Reading

Vulkan API — урок 4. Интеграции GLFW (+листинг)

Урок будет коротенький, но перед его началом хочу сказать две вещи. Во первых – ко всем урокам (или к группам уроков) в дальнейшем будет прилагаться итоговый листинг, учитывающий пройденное и написанное ранее. Во вторых – стоит набраться терпения. Сейчас мы… Continue Reading

Vulkan API — урок 3. Базовый код

Основная структура Итак. Ранее мы запускали проект с неким кодом. Теперь же будем использовать этот код: #include <vulkan/vulkan.h> #include <iostream> #include <stdexcept> #include <functional> class HelloTriangleApplication { public: void run() { initVulkan(); mainLoop(); } private: void initVulkan() { } void mainLoop()… Continue Reading