#ifndef CLIENT_RENDER_RENDER_HH_ #define CLIENT_RENDER_RENDER_HH_ #include #include #include #include #include #include #include #include #include #include // this has to go before SDL2 #include #include #include #include #include #include #include #include #include FT_FREETYPE_H #include "client/render/camera.hh" #include "client/render/program.hh" #include "client/render/struct.hh" #include "client/render/texture.hh" #include "shared/shared.hh" #include "shared/world/chunk.hh" namespace client { namespace render { void init(); void quit() noexcept; // Getters int get_fps() noexcept; SDL_Window* const& get_sdl_window() noexcept; const glm::ivec2& get_window_size() noexcept; GLuint get_texture_atlas() noexcept; // Update void update_uniforms() noexcept; void swap_window() noexcept; // Render void render_rectangle(const glm::vec2& pos, const glm::vec2& size, const glm::vec4& colour) noexcept; void render_text(const std::string_view text, const unsigned int size, const bool is_centered, const bool is_vcentered, const glm::vec4& colour, const glm::mat4& matrix) noexcept; void render_cube_outline(const glm::vec3& pos, const glm::vec4& colour) noexcept; // Draw is similar to render but more abstracted. void draw_colour(const glm::vec4& colour) noexcept; struct rectangle_args { relative_arg pos; relative_arg size; glm::vec4 colour; }; void draw_rectangle(const rectangle_args& args) noexcept; struct text_args { relative_arg pos; float extent_height; // we don't get width here, float offset_height; glm::vec4 colour; bool has_backing; bool is_centered; bool is_vcentered; }; void draw_text(const std::string_view text, const text_args& args) noexcept; } // namespace render } // namespace client #endif