Compare commits
No commits in common. "master" and "v0.2" have entirely different histories.
|
@ -21,7 +21,6 @@ class Vulkan
|
||||||
Surface surface; // Поверхность окна
|
Surface surface; // Поверхность окна
|
||||||
VkSwapchainKHR swapChain; // Список показа
|
VkSwapchainKHR swapChain; // Список показа
|
||||||
std::vector<VkImage> swapChainImages; // Изображения из списка показа
|
std::vector<VkImage> swapChainImages; // Изображения из списка показа
|
||||||
std::vector<VkImageView> swapChainImageViews; // Информация об изображениях из списка показа
|
|
||||||
|
|
||||||
// Структура для хранения флагов
|
// Структура для хранения флагов
|
||||||
struct
|
struct
|
||||||
|
|
34
src/vk.cpp
34
src/vk.cpp
|
@ -21,12 +21,6 @@ void Vulkan::init(GLFWwindow* window)
|
||||||
// завершение работы
|
// завершение работы
|
||||||
void Vulkan::destroy()
|
void Vulkan::destroy()
|
||||||
{
|
{
|
||||||
// Уничтожение информации о изображениях списка показа
|
|
||||||
for (auto & imageView : swapChainImageViews)
|
|
||||||
{
|
|
||||||
vkDestroyImageView(logicalDevice, imageView, nullptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
vkDestroySwapchainKHR(logicalDevice, swapChain, nullptr); // уничтожение цепочки показа
|
vkDestroySwapchainKHR(logicalDevice, swapChain, nullptr); // уничтожение цепочки показа
|
||||||
vkDestroySurfaceKHR(instance, surface.surface, nullptr); // уничтожение поверхности
|
vkDestroySurfaceKHR(instance, surface.surface, nullptr); // уничтожение поверхности
|
||||||
vkDestroyDevice(logicalDevice, nullptr); // Уничтожение логического устройства
|
vkDestroyDevice(logicalDevice, nullptr); // Уничтожение логического устройства
|
||||||
|
@ -431,32 +425,4 @@ void Vulkan::createSwapchain(GLFWwindow* window)
|
||||||
vkGetSwapchainImagesKHR(logicalDevice, swapChain, &surface.imageCount, nullptr);
|
vkGetSwapchainImagesKHR(logicalDevice, swapChain, &surface.imageCount, nullptr);
|
||||||
swapChainImages.resize(surface.imageCount);
|
swapChainImages.resize(surface.imageCount);
|
||||||
vkGetSwapchainImagesKHR(logicalDevice, swapChain, &surface.imageCount, swapChainImages.data());
|
vkGetSwapchainImagesKHR(logicalDevice, swapChain, &surface.imageCount, swapChainImages.data());
|
||||||
|
|
||||||
// Зададим размер массива в соответствии с количеством изображений
|
|
||||||
swapChainImageViews.resize(swapChainImages.size());
|
|
||||||
// Для каждого изображения из списка показа
|
|
||||||
for (int i = 0; i < swapChainImages.size(); i++)
|
|
||||||
{
|
|
||||||
// Заполним данные о создаваемом объекте VkImageView
|
|
||||||
VkImageViewCreateInfo createInfo{};
|
|
||||||
createInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
|
||||||
createInfo.image = swapChainImages[i];
|
|
||||||
createInfo.viewType = VK_IMAGE_VIEW_TYPE_2D;
|
|
||||||
createInfo.format = surface.selectedFormat.format;
|
|
||||||
createInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY;
|
|
||||||
createInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY;
|
|
||||||
createInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY;
|
|
||||||
createInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY;
|
|
||||||
createInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
|
|
||||||
createInfo.subresourceRange.baseMipLevel = 0;
|
|
||||||
createInfo.subresourceRange.levelCount = 1;
|
|
||||||
createInfo.subresourceRange.baseArrayLayer = 0;
|
|
||||||
createInfo.subresourceRange.layerCount = 1;
|
|
||||||
|
|
||||||
// Создание VkImageView
|
|
||||||
if (vkCreateImageView(logicalDevice, &createInfo, nullptr, &swapChainImageViews[i]) != VK_SUCCESS)
|
|
||||||
{
|
|
||||||
throw std::runtime_error("Unable to create image views");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue