Create swapchain image views

This commit is contained in:
Grayson Riffe 2025-02-11 12:55:24 -06:00
parent 1824b73d66
commit f5a06e6ac1
2 changed files with 23 additions and 0 deletions

View File

@ -20,6 +20,7 @@ namespace nf::client::render {
, m_swapchain()
, m_swapchainImageFormat()
, m_swapchainImages()
, m_swapchainImageViews()
{
NFLog("Initializing render engine");
m_window->setDisplay(m_display);
@ -233,6 +234,20 @@ namespace nf::client::render {
vkGetSwapchainImagesKHR(m_device, m_swapchain, &numSwapchainImages, nullptr);
m_swapchainImages.resize(numSwapchainImages);
vkGetSwapchainImagesKHR(m_device, m_swapchain, &numSwapchainImages, m_swapchainImages.data());
m_swapchainImageViews.resize(numSwapchainImages);
for (int i = 0; i < m_swapchainImageViews.size(); i++) {
VkImageViewCreateInfo imageViewCI = { VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO };
imageViewCI.image = m_swapchainImages[i];
imageViewCI.viewType = VK_IMAGE_VIEW_TYPE_2D;
imageViewCI.format = m_swapchainImageFormat;
imageViewCI.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
imageViewCI.subresourceRange.levelCount = 1;
imageViewCI.subresourceRange.layerCount = 1;
if (vkCreateImageView(m_device, &imageViewCI, nullptr, &m_swapchainImageViews[i]) != VK_SUCCESS)
NFError("Could not create Vulkan swapchain image view");
}
}
void RenderEngine::createRenderPass() {
@ -267,6 +282,10 @@ namespace nf::client::render {
RenderEngine::~RenderEngine() {
vkDestroyRenderPass(m_device, m_renderPassOutput, nullptr);
for (int i = 0; i < m_swapchainImageViews.size(); i++)
vkDestroyImageView(m_device, m_swapchainImageViews[i], nullptr);
vkDestroySwapchainKHR(m_device, m_swapchain, nullptr);
vkDestroyDevice(m_device, nullptr);
vkDestroySurfaceKHR(m_instance, m_surface, nullptr);

View File

@ -21,6 +21,7 @@ namespace nf::client::render {
std::shared_ptr<Window> m_window;
DisplayConfig m_display;
// Global state
VkInstance m_instance;
VkSurfaceKHR m_surface;
VkPhysicalDevice m_physicalDevice;
@ -28,8 +29,11 @@ namespace nf::client::render {
VkDevice m_device;
VkQueue m_queueGraphics, m_queuePresent;
VkRenderPass m_renderPassOutput;
// Swapchain
VkSwapchainKHR m_swapchain;
VkFormat m_swapchainImageFormat;
std::vector<VkImage> m_swapchainImages;
std::vector<VkImageView> m_swapchainImageViews;
};
}