17#ifndef _FGE_VULKAN_C_SURFACE_HPP_INCLUDED
18#define _FGE_VULKAN_C_SURFACE_HPP_INCLUDED
20#include "FastEngine/fge_extern.hpp"
22#include "FastEngine/C_vector.hpp"
26#define FGE_WINDOWPOS_UNDEFINED {SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED}
27#define FGE_WINDOWPOS_CENTERED {SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED}
52 virtual void destroy() = 0;
54 [[nodiscard]] VkSurfaceKHR get()
const;
55 [[nodiscard]]
bool isCreated()
const;
57 [[nodiscard]]
Instance& getInstance();
58 [[nodiscard]]
Instance const& getInstance()
const;
60 [[nodiscard]]
virtual VkExtent2D getExtent()
const;
63 VkSurfaceKHR _g_surface;
76 bool create(VkExtent2D extent);
78 void setExtent(VkExtent2D extent);
80 void destroy()
override;
82 [[nodiscard]] VkExtent2D getExtent()
const override;
109 [[nodiscard]]
inline VkExtent2D getExtent()
const override
111 auto const size = this->getSize();
112 return {
static_cast<uint32_t
>(size.x),
static_cast<uint32_t
>(size.y)};
115 [[nodiscard]]
virtual Types getType()
const = 0;
117 [[nodiscard]]
virtual fge::Vector2i getSize()
const = 0;
118 [[nodiscard]]
virtual fge::Vector2i getPosition()
const = 0;
136 std::string_view title,
137 fge::Vector2i
const& position,
138 fge::Vector2i
const& size,
164 bool create(std::string_view title, fge::Vector2i
const& position, fge::Vector2i
const& size, uint32_t flags);
165 void destroy()
override;
167 [[nodiscard]] Types getType()
const override;
169 [[nodiscard]] fge::Vector2i getSize()
const override;
170 [[nodiscard]] fge::Vector2i getPosition()
const override;
172 [[nodiscard]] SDL_Window* getWindow()
const;
175 SDL_Window* g_window;
Vulkan instance abstraction.
Definition C_instance.hpp:39
Definition vulkan/C_surface.hpp:70
Vulkan OS window surface made with SDL.
Definition vulkan/C_surface.hpp:129
bool create(SDL_Window *window)
Create a surface by taking an already created SDL_Window.
bool create(std::string_view title, fge::Vector2i const &position, fge::Vector2i const &size, uint32_t flags)
Create a surface and the SDL_Window.
Vulkan OS window surface.
Definition vulkan/C_surface.hpp:97
Vulkan surface abstraction.
Definition vulkan/C_surface.hpp:42