Вынес работу с VpPhysicalDevice в отдельный класс
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#pragma once
|
||||
|
||||
#include <vulkan/vulkan_core.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace VkObjects
|
||||
{
|
||||
class Surface;
|
||||
class Instance;
|
||||
|
||||
class PhysicalDevice
|
||||
{
|
||||
public:
|
||||
struct QueueFamilyIndices
|
||||
{
|
||||
uint32_t graphics_family = 0;
|
||||
uint32_t present_family = 0;
|
||||
uint32_t transfer_family = 0;
|
||||
bool is_find_graphics_family = false;
|
||||
bool is_find_present_family = false;
|
||||
bool is_find_transfer_family = false;
|
||||
};
|
||||
|
||||
QueueFamilyIndices queue_family_indices_{};
|
||||
private:
|
||||
VkPhysicalDevice physical_device_ = nullptr;
|
||||
|
||||
// Выбрасывает исключение если не подходит
|
||||
static QueueFamilyIndices is_device_suitable(VkPhysicalDevice device, VkSurfaceKHR surface, const std::vector<const char*>& device_extensions);
|
||||
static bool check_device_extensions_support(VkPhysicalDevice device, const std::vector<const char*>& device_extensions);
|
||||
static QueueFamilyIndices find_queue_family_indices(VkPhysicalDevice physical_device,
|
||||
VkSurfaceKHR surface);
|
||||
public:
|
||||
PhysicalDevice(const Instance& instance, const Surface& surface, const std::vector<const char*>& device_extensions);
|
||||
|
||||
inline VkPhysicalDevice get_native() const { return physical_device_; }
|
||||
inline QueueFamilyIndices get_queue_family_indices() const { return queue_family_indices_; }
|
||||
std::vector<uint32_t> get_unique_family_indices() const;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user