le2d v0.4.3
2D game engine framework
 
Loading...
Searching...
No Matches
le::Context Class Referenceabstract

Central API for most of the engine / framework. More...

#include <le2d/context.hpp>

Inheritance diagram for le::Context:

Classes

class  Waiter
 Calls Context::wait_idle() in its destructor. More...
 

Public Types

using SpirV = std::span< std::uint32_t const >
 
using CreateInfo = ContextCreateInfo
 

Public Member Functions

virtual auto get_window () const -> GLFWwindow *=0
 
virtual auto get_render_device () const -> kvf::RenderDevice const &=0
 
virtual auto get_resource_factory () const -> IResourceFactory const &=0
 
virtual auto get_audio_mixer () const -> IAudioMixer &=0
 
virtual auto get_default_shader () const -> IShader const &=0
 
virtual auto get_renderer () const -> IRenderer const &=0
 
auto window_size () const -> glm::ivec2
 
auto framebuffer_size () const -> glm::ivec2
 
auto swapchain_extent () const -> vk::Extent2D
 
auto main_pass_size () const -> glm::ivec2
 
auto display_ratio () const -> glm::vec2
 
auto unprojector (Viewport const &viewport, Transform const &view) const -> Unprojector
 
auto get_title () const -> klib::CString
 
void set_title (klib::CString title)
 
auto get_refresh_rate () const -> std::int32_t
 
auto is_fullscreen () const -> bool
 
auto set_fullscreen (GLFWmonitor *target=nullptr) -> bool
 Show window and set fullscreen.
 
void set_windowed (glm::ivec2 size={1280, 720})
 Show window and set windowed with given size.
 
void set_visible (bool visible)
 Show/hide window.
 
auto is_running () const -> bool
 Check if Window is (and should remain) open.
 
void set_window_close ()
 Set the Window close flag.
 
void cancel_window_close ()
 Reset the Window close flag.
 
void wait_idle ()
 Wait for the graphics and audio devices to become idle.
 
virtual auto get_render_scale () const -> float=0
 
virtual auto set_render_scale (float scale) -> bool=0
 
virtual auto get_supported_vsync () const -> std::span< Vsync const >=0
 
virtual auto get_vsync () const -> Vsync=0
 
virtual auto set_vsync (Vsync vsync) -> bool=0
 
virtual auto get_samples () const -> vk::SampleCountFlagBits=0
 
virtual auto get_supported_samples () const -> vk::SampleCountFlags=0
 
virtual auto set_samples (vk::SampleCountFlagBits samples) -> bool=0
 Set desired MSAA samples.
 
virtual auto next_frame () -> vk::CommandBuffer=0
 Begin the next frame.
 
virtual auto event_queue () const -> std::span< Event const >=0
 
virtual auto begin_render (kvf::Color clear=kvf::black_v) -> IRenderer &=0
 Begin rendering the primary RenderPass.
 
virtual void present ()=0
 Submit recorded commands and present RenderTarget of primary RenderPass.
 
virtual auto get_frame_stats () const -> FrameStats const &=0
 
auto create_waiter () -> Waiter
 
virtual auto create_render_pass (vk::SampleCountFlagBits samples) const -> std::unique_ptr< IRenderPass >=0
 
virtual auto create_asset_loader (gsl::not_null< IDataLoader const * > data_loader) const -> AssetLoader=0
 

Static Public Member Functions

static auto create (CreateInfo const &create_info={}) -> std::unique_ptr< Context >
 

Static Public Attributes

static constexpr auto min_render_scale_v {0.2f}
 
static constexpr auto max_render_scale_v {8.0f}
 

Detailed Description

Central API for most of the engine / framework.

Member Typedef Documentation

◆ CreateInfo

◆ SpirV

using le::Context::SpirV = std::span<std::uint32_t const>

Member Function Documentation

◆ begin_render()

virtual auto le::Context::begin_render ( kvf::Color  clear = kvf::black_v) -> IRenderer &
pure virtual

Begin rendering the primary RenderPass.

Parameters
clearClear color.
Returns
Renderer instance.

◆ cancel_window_close()

void le::Context::cancel_window_close ( )

Reset the Window close flag.

◆ create()

static auto le::Context::create ( CreateInfo const &  create_info = {}) -> std::unique_ptr< Context >
static

◆ create_asset_loader()

virtual auto le::Context::create_asset_loader ( gsl::not_null< IDataLoader const * >  data_loader) const -> AssetLoader
pure virtual

◆ create_render_pass()

virtual auto le::Context::create_render_pass ( vk::SampleCountFlagBits  samples) const -> std::unique_ptr< IRenderPass >
pure virtual

◆ create_waiter()

auto le::Context::create_waiter ( ) -> Waiter

◆ display_ratio()

auto le::Context::display_ratio ( ) const -> glm::vec2
Returns
Ratio of framebuffer to window sizes.

◆ event_queue()

virtual auto le::Context::event_queue ( ) const -> std::span< Event const >
pure virtual
Returns
Events that occurred since the last frame.

◆ framebuffer_size()

auto le::Context::framebuffer_size ( ) const -> glm::ivec2
Returns
Framebuffer size as reported by GLFW.

◆ get_audio_mixer()

virtual auto le::Context::get_audio_mixer ( ) const -> IAudioMixer &
pure virtual

◆ get_default_shader()

virtual auto le::Context::get_default_shader ( ) const -> IShader const &
pure virtual

◆ get_frame_stats()

virtual auto le::Context::get_frame_stats ( ) const -> FrameStats const &
pure virtual

◆ get_refresh_rate()

auto le::Context::get_refresh_rate ( ) const -> std::int32_t

◆ get_render_device()

virtual auto le::Context::get_render_device ( ) const -> kvf::RenderDevice const &
pure virtual

◆ get_render_scale()

virtual auto le::Context::get_render_scale ( ) const -> float
pure virtual
Returns
Current render scale.

◆ get_renderer()

virtual auto le::Context::get_renderer ( ) const -> IRenderer const &
pure virtual

◆ get_resource_factory()

virtual auto le::Context::get_resource_factory ( ) const -> IResourceFactory const &
pure virtual

◆ get_samples()

virtual auto le::Context::get_samples ( ) const -> vk::SampleCountFlagBits
pure virtual
Returns
Current MSAA samples.

◆ get_supported_samples()

virtual auto le::Context::get_supported_samples ( ) const -> vk::SampleCountFlags
pure virtual
Returns
Supported MSAA samples.

◆ get_supported_vsync()

virtual auto le::Context::get_supported_vsync ( ) const -> std::span< Vsync const >
pure virtual
Returns
List of supported Vsync modes.

◆ get_title()

auto le::Context::get_title ( ) const -> klib::CString

◆ get_vsync()

virtual auto le::Context::get_vsync ( ) const -> Vsync
pure virtual
Returns
Current Vsync mode.

◆ get_window()

virtual auto le::Context::get_window ( ) const -> GLFWwindow *
pure virtual

◆ is_fullscreen()

auto le::Context::is_fullscreen ( ) const -> bool

◆ is_running()

auto le::Context::is_running ( ) const -> bool

Check if Window is (and should remain) open.

Returns
true unless the close flag has been set.

◆ main_pass_size()

auto le::Context::main_pass_size ( ) const -> glm::ivec2
Returns
Main Render Pass framebuffer size (scaled).

◆ next_frame()

virtual auto le::Context::next_frame ( ) -> vk::CommandBuffer
pure virtual

Begin the next frame.

Resets render resources and polls events.

Returns
Current virtual frame's Command Buffer.

◆ present()

virtual void le::Context::present ( )
pure virtual

Submit recorded commands and present RenderTarget of primary RenderPass.

◆ set_fullscreen()

auto le::Context::set_fullscreen ( GLFWmonitor *  target = nullptr) -> bool

Show window and set fullscreen.

Parameters
targetTarget monitor (optional).
Returns
true if successful.

◆ set_render_scale()

virtual auto le::Context::set_render_scale ( float  scale) -> bool
pure virtual
Parameters
scaleDesired render scale.
Returns
true if desired scale is within limits.

◆ set_samples()

virtual auto le::Context::set_samples ( vk::SampleCountFlagBits  samples) -> bool
pure virtual

Set desired MSAA samples.

RenderPass will be recreated on the next frame, not immediately.

Returns
true unless not supported.

◆ set_title()

void le::Context::set_title ( klib::CString  title)

◆ set_visible()

void le::Context::set_visible ( bool  visible)

Show/hide window.

◆ set_vsync()

virtual auto le::Context::set_vsync ( Vsync  vsync) -> bool
pure virtual
Parameters
vsyncDesired Vsync mode.
Returns
true if desired mode is supported.

◆ set_window_close()

void le::Context::set_window_close ( )

Set the Window close flag.

Note: the window will remain visible until this object is destroyed by owning code.

◆ set_windowed()

void le::Context::set_windowed ( glm::ivec2  size = {1280, 720})

Show window and set windowed with given size.

Parameters
sizeWindow size. Must be positive.

◆ swapchain_extent()

auto le::Context::swapchain_extent ( ) const -> vk::Extent2D
Returns
Current Swapchain extent.

◆ unprojector()

auto le::Context::unprojector ( Viewport const &  viewport,
Transform const &  view 
) const -> Unprojector
inline
Parameters
viewportRender viewport to unproject.
viewRender view to unproject.
Returns
Unprojector for main render pass.

◆ wait_idle()

void le::Context::wait_idle ( )

Wait for the graphics and audio devices to become idle.

Does not account for user owned audio sources.

◆ window_size()

auto le::Context::window_size ( ) const -> glm::ivec2
Returns
Window size as reported by GLFW.

Member Data Documentation

◆ max_render_scale_v

constexpr auto le::Context::max_render_scale_v {8.0f}
staticconstexpr

◆ min_render_scale_v

constexpr auto le::Context::min_render_scale_v {0.2f}
staticconstexpr

The documentation for this class was generated from the following file: