From 013ac68c9ef768590b695573bed1a48090c2887d Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Thu, 17 Feb 2022 12:04:03 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=86=D0=B5=D0=BF=D0=BE=D1=87=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=B7=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/vk.h | 1 + src/vk.cpp | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/vk.h b/include/vk.h index 310f042..68e7d97 100644 --- a/include/vk.h +++ b/include/vk.h @@ -18,6 +18,7 @@ class Vulkan VkDevice logicalDevice; // логическое устройство VkQueue graphicalQueue; // очередь для работы с графикой Surface surface; // Поверхность окна + VkSwapchainKHR swapChain; // Список показа // Структура для хранения флагов struct diff --git a/src/vk.cpp b/src/vk.cpp index 857d255..c66bdd5 100644 --- a/src/vk.cpp +++ b/src/vk.cpp @@ -372,5 +372,27 @@ void Vulkan::createSwapchain(GLFWwindow* window) if (surface.capabilities.maxImageCount) surface.imageCount %= surface.capabilities.maxImageCount; + // Заполнение данных о создаваемом списке показа + VkSwapchainCreateInfoKHR createInfo{}; + createInfo.sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; + createInfo.surface = surface.surface; + createInfo.minImageCount = surface.imageCount; + createInfo.imageFormat = surface.selectedFormat.format; + createInfo.imageColorSpace = surface.selectedFormat.colorSpace; + createInfo.imageExtent = surface.selectedExtent; + createInfo.imageArrayLayers = 1; + createInfo.imageUsage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT; + createInfo.imageSharingMode = VK_SHARING_MODE_EXCLUSIVE; + createInfo.preTransform = surface.capabilities.currentTransform; + createInfo.compositeAlpha = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; + createInfo.presentMode = surface.selectedPresentMode; + createInfo.clipped = VK_TRUE; + createInfo.oldSwapchain = VK_NULL_HANDLE; + + // Создание списка показа + if (vkCreateSwapchainKHR(logicalDevice, &createInfo, nullptr, &swapChain) != VK_SUCCESS) + { + throw std::runtime_error("Unable to create swap chain"); + } }