I blue myself

Signed-off-by: Slendi <slendi@socopon.com>
This commit is contained in:
2025-12-02 17:57:59 +02:00
parent 8d3749cc6a
commit 24585aed87
7 changed files with 406 additions and 35 deletions

View File

@@ -1,5 +1,7 @@
#pragma once
#include <vector>
#include <SDL3/SDL_video.h>
#include <VkBootstrap.h>
#include <vulkan/vulkan_core.h>
@@ -8,6 +10,15 @@
namespace Lunar {
struct FrameData {
VkCommandPool command_pool;
VkCommandBuffer main_command_buffer;
VkSemaphore swapchain_semaphore;
VkFence render_fence;
};
constexpr unsigned FRAME_OVERLAP = 2;
struct Application {
Application();
~Application();
@@ -15,8 +26,45 @@ struct Application {
auto run() -> void;
private:
vkb::Instance m_vkb_instance;
VkSurfaceKHR m_vk_surface { nullptr };
auto vk_init() -> void;
auto swapchain_init() -> void;
auto commands_init() -> void;
auto sync_init() -> void;
auto render() -> void;
auto create_swapchain(uint32_t width, uint32_t height) -> void;
auto destroy_swapchain() -> void;
struct {
vkb::Instance instance;
vkb::PhysicalDevice phys_dev;
vkb::Device dev;
vkb::Swapchain swapchain;
} m_vkb;
struct {
VkSwapchainKHR swapchain { VK_NULL_HANDLE };
VkFormat swapchain_image_format;
VkSurfaceKHR surface { nullptr };
VkQueue graphics_queue { nullptr };
uint32_t graphics_queue_family { 0 };
std::vector<VkImage> swapchain_images;
std::vector<VkImageView> swapchain_image_views;
std::vector<VkSemaphore> present_semaphores;
VkExtent2D swapchain_extent;
std::array<FrameData, FRAME_OVERLAP> frames;
auto get_current_frame() -> FrameData &
{
return frames.at(frame_number % frames.size());
}
uint64_t frame_number { 0 };
} m_vk;
SDL_Window *m_window { nullptr };
Logger m_logger { "Lunar" };