initial commit
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
#pragma once
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <iostream>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
struct SDL_Window;
|
||||
|
||||
struct QueueFamilyIndices
|
||||
{
|
||||
std::optional<uint32_t> graphicsFamily;
|
||||
std::optional<uint32_t> presentFamily;
|
||||
|
||||
bool isComplete() const
|
||||
{
|
||||
return graphicsFamily.has_value() &&
|
||||
presentFamily.has_value();
|
||||
}
|
||||
};
|
||||
|
||||
struct SwapchainSupportDetails
|
||||
{
|
||||
VkSurfaceCapabilitiesKHR capabilities;
|
||||
std::vector<VkSurfaceFormatKHR> formats;
|
||||
std::vector<VkPresentModeKHR> presentModes;
|
||||
};
|
||||
|
||||
QueueFamilyIndices findQueueFamilies(
|
||||
VkPhysicalDevice device,
|
||||
VkSurfaceKHR surface);
|
||||
|
||||
SwapchainSupportDetails querySwapchainSupport(
|
||||
VkPhysicalDevice device,
|
||||
VkSurfaceKHR surface);
|
||||
|
||||
class VulkanContext
|
||||
{
|
||||
public:
|
||||
VulkanContext(
|
||||
SDL_Window* window,
|
||||
const char* appName,
|
||||
uint32_t versionMajor,
|
||||
uint32_t versionMinor,
|
||||
uint32_t versionPatch);
|
||||
|
||||
~VulkanContext();
|
||||
|
||||
VulkanContext(const VulkanContext&) = delete;
|
||||
VulkanContext& operator=(const VulkanContext&) = delete;
|
||||
|
||||
VkDevice device() const { return m_device; }
|
||||
VkPhysicalDevice physicalDevice() const { return m_physicalDevice; }
|
||||
VkInstance instance() const { return m_instance; }
|
||||
VkSurfaceKHR surface() const { return m_surface; }
|
||||
VkQueue graphicsQueue() const { return m_graphicsQueue; }
|
||||
VkQueue presentQueue() const { return m_presentQueue; }
|
||||
VkCommandPool commandPool() const { return m_commandPool; }
|
||||
const QueueFamilyIndices& queueIndices() const { return m_queueIndices; }
|
||||
|
||||
void release();
|
||||
|
||||
private:
|
||||
VkInstance m_instance = VK_NULL_HANDLE;
|
||||
VkSurfaceKHR m_surface = VK_NULL_HANDLE;
|
||||
VkPhysicalDevice m_physicalDevice = VK_NULL_HANDLE;
|
||||
VkDevice m_device = VK_NULL_HANDLE;
|
||||
VkQueue m_graphicsQueue = VK_NULL_HANDLE;
|
||||
VkQueue m_presentQueue = VK_NULL_HANDLE;
|
||||
VkCommandPool m_commandPool = VK_NULL_HANDLE;
|
||||
QueueFamilyIndices m_queueIndices;
|
||||
};
|
||||
Reference in New Issue
Block a user