7 #include <Graphics/Backend/Command.hpp>
8 #include <Graphics/Backend/Sync.hpp>
11 #include "RenderFrame.hpp"
13 namespace mn::Graphics
17 std::unique_ptr<Backend::CommandBuffer> command_buffer;
18 std::unique_ptr<Backend::CommandPool> command_pool;
19 std::unique_ptr<Backend::Semaphore> swapchain_sem, render_sem;
20 std::unique_ptr<Backend::Fence> render_fence;
28 std::set<std::shared_ptr<void>> resources;
38 inline static bool ImGui_Initialized =
false;
41 MN_SYMBOL
Window(
const std::string& config_file =
"");
43 MN_SYMBOL
static Window fromLuaScript(
const std::string& config_file);
50 MN_SYMBOL
void close();
52 MN_SYMBOL
bool pollEvent(
Event& event)
const;
54 auto size()
const {
return _size; }
58 MN_SYMBOL
void runFrame(
const std::function<
void(
RenderFrame& rf)>& func)
const;
60 MN_SYMBOL
void setTitle(
const std::string& title)
const;
61 bool shouldClose()
const {
return _close; }
62 MN_SYMBOL
void finishWork()
const;
64 MN_SYMBOL
void showMouse(
bool show);
67 float aspectRatio()
const {
return (
float)Math::x(_size) / (float)Math::y(_size); }
69 bool process_imgui_events =
true;
72 void construct_swapchain();
74 void _open(
const Math::Vec2u& size,
const std::string& name);
76 uint32_t next_image_index(std::shared_ptr<FrameData> fd)
const;
77 std::shared_ptr<FrameData> get_next_frame()
const;
81 mn::handle_t surface, swapchain;
83 std::shared_ptr<Image> imgui_surface;
84 std::vector<std::shared_ptr<Image>> images;
86 std::vector<std::shared_ptr<FrameData>> frame_data;
Definition: Window.hpp:16
Definition: RenderFrame.hpp:25
Definition: Window.hpp:37
Definition: Vector.hpp:12
Definition: TypedHandle.hpp:9