Golias Engine
A C++ 20 'game engine' built with SDL3 with wide platform support.
Public Member Functions | Protected Attributes | List of all members
RenderingDevice Class Referenceabstract

Abstract base class for rendering devices. More...

#include <rendering_device.h>

Inheritance diagram for RenderingDevice:
RIDAllocator RenderingDeviceGLES3 RenderingDeviceSDL_GPU

Public Member Functions

virtual ~RenderingDevice ()=default
 
virtual bool initialize (SDL_Window *sdl_window)=0
 
virtual void shutdown ()=0
 
virtual RID shader_create_from_source (const String &vertex_src, const String &fragment_src)=0
 
virtual void shader_destroy (RID shader)=0
 
virtual RID buffer_create (size_t size, uint32_t usage_flags, const void *data=nullptr)=0
 
virtual void buffer_update (RID buffer, size_t offset, size_t size, const void *data)=0
 
virtual void buffer_destroy (RID buffer)=0
 
virtual RID texture_create (const TextureFormat &format, void *data=nullptr)=0
 
virtual void texture_update (RID texture, uint32_t mip_level, uint32_t layer, const void *data, size_t size)=0
 
virtual void texture_generate_mipmaps (RID texture)=0
 
virtual void texture_destroy (RID texture)=0
 
virtual void get_texture_size (RID texture, uint32_t &width, uint32_t &height)=0
 
virtual uint32_t texture_get_native_handle (RID texture)=0
 
virtual Texture get_texture (RID texture)=0
 
virtual RID sampler_create (const SamplerState &state)=0
 
virtual void sampler_destroy (RID sampler)=0
 
virtual RID framebuffer_create (const Vector< RenderPassAttachment > &attachments)=0
 
virtual void framebuffer_destroy (RID framebuffer)=0
 
virtual RID pipeline_create (const PipelineState &state)=0
 
virtual void pipeline_destroy (RID pipeline)=0
 
virtual void begin_frame ()=0
 
virtual void end_frame ()=0
 
virtual void render_pass_begin (RID framebuffer, const Viewport &viewport, const Scissor &scissor)=0
 
virtual void render_pass_end ()=0
 
virtual void bind_pipeline (RID pipeline)=0
 
virtual void bind_vertex_buffers (const Vector< RID > &buffers, const Vector< size_t > &offsets={})=0
 
virtual void bind_index_buffer (RID buffer, IndexType type, size_t offset=0)=0
 
virtual void bind_uniform_buffer (uint32_t binding, RID buffer, size_t offset=0, size_t size=0)=0
 
virtual void bind_texture (uint32_t binding, RID texture, RID sampler)=0
 
virtual void push_constant (const String &name, const void *data, size_t size)=0
 
virtual void draw (uint32_t vertex_count, uint32_t instance_count=1, uint32_t first_vertex=0, uint32_t first_instance=0)=0
 
virtual void draw_indexed (uint32_t index_count, uint32_t instance_count=1, uint32_t first_index=0, int32_t vertex_offset=0, uint32_t first_instance=0)=0
 
virtual void set_viewport (const Viewport &viewport)=0
 
virtual void set_scissor (const Scissor &scissor)=0
 
virtual void clear_color (const glm::vec4 &color)=0
 
virtual void clear_depth_stencil (float depth=1.0f, uint32_t stencil=0)=0
 
virtual void swap_buffers ()=0
 
virtual void get_drawable_size (int &width, int &height)
 
- Public Member Functions inherited from RIDAllocator
 RIDAllocator ()=default
 
virtual ~RIDAllocator ()=default
 
RID allocate_rid ()
 

Protected Attributes

SDL_Window * _window = nullptr
 
- Protected Attributes inherited from RIDAllocator
RID next_rid = 1
 

Detailed Description

Abstract base class for rendering devices.

Constructor & Destructor Documentation

◆ ~RenderingDevice()

virtual RenderingDevice::~RenderingDevice ( )
virtualdefault

Member Function Documentation

◆ begin_frame()

virtual void RenderingDevice::begin_frame ( )
pure virtual

◆ bind_index_buffer()

virtual void RenderingDevice::bind_index_buffer ( RID  buffer,
IndexType  type,
size_t  offset = 0 
)
pure virtual

◆ bind_pipeline()

virtual void RenderingDevice::bind_pipeline ( RID  pipeline)
pure virtual

◆ bind_texture()

virtual void RenderingDevice::bind_texture ( uint32_t  binding,
RID  texture,
RID  sampler 
)
pure virtual

◆ bind_uniform_buffer()

virtual void RenderingDevice::bind_uniform_buffer ( uint32_t  binding,
RID  buffer,
size_t  offset = 0,
size_t  size = 0 
)
pure virtual

◆ bind_vertex_buffers()

virtual void RenderingDevice::bind_vertex_buffers ( const Vector< RID > &  buffers,
const Vector< size_t > &  offsets = {} 
)
pure virtual

◆ buffer_create()

virtual RID RenderingDevice::buffer_create ( size_t  size,
uint32_t  usage_flags,
const void *  data = nullptr 
)
pure virtual

◆ buffer_destroy()

virtual void RenderingDevice::buffer_destroy ( RID  buffer)
pure virtual

◆ buffer_update()

virtual void RenderingDevice::buffer_update ( RID  buffer,
size_t  offset,
size_t  size,
const void *  data 
)
pure virtual

◆ clear_color()

virtual void RenderingDevice::clear_color ( const glm::vec4 &  color)
pure virtual

◆ clear_depth_stencil()

virtual void RenderingDevice::clear_depth_stencil ( float  depth = 1.0f,
uint32_t  stencil = 0 
)
pure virtual

◆ draw()

virtual void RenderingDevice::draw ( uint32_t  vertex_count,
uint32_t  instance_count = 1,
uint32_t  first_vertex = 0,
uint32_t  first_instance = 0 
)
pure virtual

◆ draw_indexed()

virtual void RenderingDevice::draw_indexed ( uint32_t  index_count,
uint32_t  instance_count = 1,
uint32_t  first_index = 0,
int32_t  vertex_offset = 0,
uint32_t  first_instance = 0 
)
pure virtual

◆ end_frame()

virtual void RenderingDevice::end_frame ( )
pure virtual

◆ framebuffer_create()

virtual RID RenderingDevice::framebuffer_create ( const Vector< RenderPassAttachment > &  attachments)
pure virtual

◆ framebuffer_destroy()

virtual void RenderingDevice::framebuffer_destroy ( RID  framebuffer)
pure virtual

◆ get_drawable_size()

void RenderingDevice::get_drawable_size ( int &  width,
int &  height 
)
virtual

◆ get_texture()

virtual Texture RenderingDevice::get_texture ( RID  texture)
pure virtual

◆ get_texture_size()

virtual void RenderingDevice::get_texture_size ( RID  texture,
uint32_t &  width,
uint32_t &  height 
)
pure virtual

◆ initialize()

virtual bool RenderingDevice::initialize ( SDL_Window *  sdl_window)
pure virtual

◆ pipeline_create()

virtual RID RenderingDevice::pipeline_create ( const PipelineState state)
pure virtual

◆ pipeline_destroy()

virtual void RenderingDevice::pipeline_destroy ( RID  pipeline)
pure virtual

◆ push_constant()

virtual void RenderingDevice::push_constant ( const String name,
const void *  data,
size_t  size 
)
pure virtual

◆ render_pass_begin()

virtual void RenderingDevice::render_pass_begin ( RID  framebuffer,
const Viewport viewport,
const Scissor scissor 
)
pure virtual

◆ render_pass_end()

virtual void RenderingDevice::render_pass_end ( )
pure virtual

◆ sampler_create()

virtual RID RenderingDevice::sampler_create ( const SamplerState state)
pure virtual

◆ sampler_destroy()

virtual void RenderingDevice::sampler_destroy ( RID  sampler)
pure virtual

◆ set_scissor()

virtual void RenderingDevice::set_scissor ( const Scissor scissor)
pure virtual

◆ set_viewport()

virtual void RenderingDevice::set_viewport ( const Viewport viewport)
pure virtual

◆ shader_create_from_source()

virtual RID RenderingDevice::shader_create_from_source ( const String vertex_src,
const String fragment_src 
)
pure virtual

◆ shader_destroy()

virtual void RenderingDevice::shader_destroy ( RID  shader)
pure virtual

◆ shutdown()

virtual void RenderingDevice::shutdown ( )
pure virtual

◆ swap_buffers()

virtual void RenderingDevice::swap_buffers ( )
pure virtual

◆ texture_create()

virtual RID RenderingDevice::texture_create ( const TextureFormat format,
void *  data = nullptr 
)
pure virtual

◆ texture_destroy()

virtual void RenderingDevice::texture_destroy ( RID  texture)
pure virtual

◆ texture_generate_mipmaps()

virtual void RenderingDevice::texture_generate_mipmaps ( RID  texture)
pure virtual

◆ texture_get_native_handle()

virtual uint32_t RenderingDevice::texture_get_native_handle ( RID  texture)
pure virtual

◆ texture_update()

virtual void RenderingDevice::texture_update ( RID  texture,
uint32_t  mip_level,
uint32_t  layer,
const void *  data,
size_t  size 
)
pure virtual

Member Data Documentation

◆ _window

SDL_Window* RenderingDevice::_window = nullptr
protected

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