Создание цепочки показа

This commit is contained in:
parent 83ab14804f
commit 013ac68c9e
2 changed files with 23 additions and 0 deletions

View File

@ -18,6 +18,7 @@ class Vulkan
VkDevice logicalDevice; // логическое устройство VkDevice logicalDevice; // логическое устройство
VkQueue graphicalQueue; // очередь для работы с графикой VkQueue graphicalQueue; // очередь для работы с графикой
Surface surface; // Поверхность окна Surface surface; // Поверхность окна
VkSwapchainKHR swapChain; // Список показа
// Структура для хранения флагов // Структура для хранения флагов
struct struct

View File

@ -372,5 +372,27 @@ void Vulkan::createSwapchain(GLFWwindow* window)
if (surface.capabilities.maxImageCount) if (surface.capabilities.maxImageCount)
surface.imageCount %= 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");
}
} }