Toast Engine
Toggle main menu visibility
Loading...
Searching...
No Matches
sdl_output_target.hpp
1
4
5
#pragma once
6
7
#include "output_target_base.hpp"
8
#include "vulkan_swapchain.hpp"
9
10
#include <SDL3/SDL.h>
11
#include <SDL3/SDL_vulkan.h>
12
#include <optional>
13
#include <vector>
14
15
namespace
renderer {
16
17
class
SDLOutputTarget final :
public
IOutputTarget
{
18
public
:
19
static
auto
getRequiredInstanceExtensions() -> std::vector<const char*>;
20
static
auto
getRequiredInstanceExtensions(SDL_Window* window) -> std::vector<const char*>;
21
static
auto
getRequiredDeviceExtensions() -> std::vector<const char*>;
22
static
auto
queryExtent(SDL_Window* window) -> vk::Extent2D;
23
24
SDLOutputTarget(
const
VulkanCore
& core, SDL_Window* window, vk::Extent2D preferred_extent);
25
~SDLOutputTarget()
override
=
default
;
26
27
SDLOutputTarget(
const
SDLOutputTarget&) =
delete
;
28
auto
operator=(
const
SDLOutputTarget&) -> SDLOutputTarget& =
delete
;
29
SDLOutputTarget(SDLOutputTarget&&) =
delete
;
30
auto
operator=(SDLOutputTarget&&) -> SDLOutputTarget& =
delete
;
31
32
[[nodiscard]]
33
auto
getExtent()
const
-> vk::Extent2D
override
;
34
[[nodiscard]]
35
auto
getColorFormat()
const
-> vk::Format
override
;
36
[[nodiscard]]
37
auto
getImageCount()
const
-> uint32_t
override
;
38
[[nodiscard]]
39
auto
getColorImage(uint32_t index)
const
->
const
vk::Image&
override
;
40
[[nodiscard]]
41
auto
getColorAttachment(uint32_t index)
const
->
const
vk::raii::ImageView&
override
;
42
[[nodiscard]]
43
auto
acquireNextImage(uint64_t timeout, vk::Semaphore image_available, vk::Fence in_flight_fence)
44
-> vk::ResultValue<uint32_t>
override
;
45
[[nodiscard]]
46
auto
present(uint32_t image_index, vk::Semaphore render_finished) -> vk::Result
override
;
47
48
auto
recordFinalize(vk::CommandBuffer command_buffer, uint32_t image_index) ->
void
override
;
49
50
auto
recreate(vk::Extent2D extent) ->
void
override
;
51
52
[[nodiscard]]
53
auto
isPresentable()
const
->
bool
override
;
54
55
[[nodiscard]]
56
auto
getWindow()
const
-> SDL_Window*;
57
58
[[nodiscard]]
59
auto
getSurface()
const
->
const
vk::raii::SurfaceKHR&;
60
61
private
:
62
static
auto
createSurface(
const
VulkanCore
& core, SDL_Window* window) -> vk::raii::SurfaceKHR;
63
64
const
VulkanCore
* m_core =
nullptr
;
65
SDL_Window* m_window =
nullptr
;
66
vk::raii::SurfaceKHR m_surface =
nullptr
;
67
std::optional<VulkanSwapchain> m_swapchain;
68
};
69
70
}
renderer::IOutputTarget
Definition
output_target_base.hpp:20
renderer::VulkanCore
Definition
vulkan_core.hpp:48
engine
src
toast
renderer
sdl_output_target.hpp
Generated by
1.17.0