Перенёс управление VkSwapchainKHR и ImageViews в отдельный класс
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#include "GLFW/glfw3.h"
|
||||
|
||||
namespace VkObjects
|
||||
{
|
||||
class Device;
|
||||
class PhysicalDevice;
|
||||
class Surface;
|
||||
|
||||
class Swapchain
|
||||
{
|
||||
struct SwapchainSupportDetails
|
||||
{
|
||||
std::vector<VkSurfaceFormatKHR> formats;
|
||||
std::vector<VkPresentModeKHR> present_modes;
|
||||
VkSurfaceCapabilitiesKHR capabilities;
|
||||
};
|
||||
|
||||
const Device& device_;
|
||||
VkSwapchainKHR swapchain_ = nullptr;
|
||||
std::vector<VkImage> swapchain_images_;
|
||||
std::vector<VkImageView> swapchain_image_views_;
|
||||
VkFormat swapchain_image_format_;
|
||||
VkExtent2D swapchain_extent_;
|
||||
|
||||
static SwapchainSupportDetails query_swapchain_details(const Surface& surface, const PhysicalDevice& physical_device);
|
||||
static VkSurfaceFormatKHR choose_surface_format(const std::vector<VkSurfaceFormatKHR>& surface_formats);
|
||||
static VkPresentModeKHR choose_present_mode(const std::vector<VkPresentModeKHR>& present_modes, VkPresentModeKHR desired_present_mode);
|
||||
|
||||
void create_swapchain(const Surface& surface, const PhysicalDevice& physical_device, GLFWwindow* window);
|
||||
void create_image_views();
|
||||
public:
|
||||
Swapchain(const Surface& surface, const PhysicalDevice& physical_device, const Device& device, GLFWwindow* window);
|
||||
~Swapchain();
|
||||
|
||||
inline VkSwapchainKHR get_native() const { return swapchain_; }
|
||||
inline const std::vector<VkImage>& get_images() const { return swapchain_images_; }
|
||||
inline const std::vector<VkImageView>& get_image_views() const { return swapchain_image_views_; }
|
||||
inline VkExtent2D get_extent() const { return swapchain_extent_; }
|
||||
inline VkFormat get_image_format() const { return swapchain_image_format_; }
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user