Unravel Engine C++ Reference
Loading...
Searching...
No Matches
renderer.h
Go to the documentation of this file.
1#pragma once
2#include <engine/engine_export.h>
3
4#include "render_window.h"
5#include <graphics/shader.h>
6
7#include <base/basetypes.hpp>
8#include <cmd_line/parser.h>
9#include <context/context.hpp>
10
11#include <memory>
12
13namespace unravel
14{
15
16struct ENGINE_EXPORT renderer
17{
18 using render_window_t = std::unique_ptr<render_window>;
19
21 ~renderer();
22
23 auto init(rtti::context& ctx, const cmd_line::parser& parser) -> bool;
24 auto deinit(rtti::context& ctx) -> bool;
25
26 auto create_window_for_display(int index, const std::string& title, uint32_t flags)
27 -> const std::unique_ptr<render_window>&;
28 void set_main_window(os::window&& window);
29 auto get_main_window() const -> render_window*;
30 void close_main_window();
31 void request_screenshot(const std::string& file);
32
33 auto get_vsync() const -> bool;
34 void set_vsync(bool vsync);
35
36protected:
37 auto init_backend(const cmd_line::parser& parser) -> bool;
38
39 void on_os_event(rtti::context& ctx, os::event& e);
40 void frame_begin(rtti::context& ctx, delta_t dt);
41 void frame_end(rtti::context& ctx, delta_t dt);
42
43 auto get_renderer_type(const cmd_line::parser& parser) const -> gfx::renderer_type;
44 auto get_reset_flags(const cmd_line::parser& parser) const -> uint32_t;
45 auto get_reset_flags(bool vsync) const -> uint32_t;
46
47 uint32_t reset_flags_{};
49 std::unique_ptr<os::window> init_window_{};
50 std::unique_ptr<render_window> render_window_{};
51 std::string request_screenshot_{};
52
53 std::shared_ptr<int> sentinel_ = std::make_shared<int>(0);
54};
55} // namespace unravel
event_type event
std::chrono::duration< float > delta_t
Struct representing a render window.
std::unique_ptr< render_window > render_window_t
Definition renderer.h:18