Golias Engine
A C++ 20 'game engine' built with SDL3 with wide platform support.
Classes | Public Member Functions | List of all members
RenderingDeviceSDL_GPU Class Referencefinal

Rendering device implementation using SDL_GPU. More...

#include <rendering_device_sdl_gpu.h>

Inheritance diagram for RenderingDeviceSDL_GPU:
RenderingDevice RIDAllocator

Public Member Functions

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

Additional Inherited Members

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

Detailed Description

Rendering device implementation using SDL_GPU.

Backend:

Constructor & Destructor Documentation

◆ RenderingDeviceSDL_GPU()

RenderingDeviceSDL_GPU::RenderingDeviceSDL_GPU ( )
default

◆ ~RenderingDeviceSDL_GPU()

RenderingDeviceSDL_GPU::~RenderingDeviceSDL_GPU ( )
overridedefault

Member Function Documentation

◆ begin_frame()

void RenderingDeviceSDL_GPU::begin_frame ( )
overridevirtual

Implements RenderingDevice.

◆ bind_index_buffer()

void RenderingDeviceSDL_GPU::bind_index_buffer ( RID  buffer,
IndexType  type,
size_t  offset = 0 
)
overridevirtual

Implements RenderingDevice.

◆ bind_pipeline()

void RenderingDeviceSDL_GPU::bind_pipeline ( RID  pipeline)
overridevirtual

Implements RenderingDevice.

◆ bind_texture()

void RenderingDeviceSDL_GPU::bind_texture ( uint32_t  binding,
RID  texture,
RID  sampler 
)
overridevirtual

Implements RenderingDevice.

◆ bind_uniform_buffer()

void RenderingDeviceSDL_GPU::bind_uniform_buffer ( uint32_t  binding,
RID  buffer,
size_t  offset = 0,
size_t  size = 0 
)
overridevirtual

Implements RenderingDevice.

◆ bind_vertex_buffers()

void RenderingDeviceSDL_GPU::bind_vertex_buffers ( const Vector< RID > &  buffers,
const Vector< size_t > &  offsets = {} 
)
overridevirtual

Implements RenderingDevice.

◆ buffer_create()

RID RenderingDeviceSDL_GPU::buffer_create ( size_t  size,
uint32_t  usage_flags,
const void *  data = nullptr 
)
overridevirtual

Implements RenderingDevice.

◆ buffer_destroy()

void RenderingDeviceSDL_GPU::buffer_destroy ( RID  buffer)
overridevirtual

Implements RenderingDevice.

◆ buffer_update()

void RenderingDeviceSDL_GPU::buffer_update ( RID  buffer,
size_t  offset,
size_t  size,
const void *  data 
)
overridevirtual

Implements RenderingDevice.

◆ clear_color()

void RenderingDeviceSDL_GPU::clear_color ( const glm::vec4 &  color)
overridevirtual

Implements RenderingDevice.

◆ clear_depth_stencil()

void RenderingDeviceSDL_GPU::clear_depth_stencil ( float  depth = 1.0f,
uint32_t  stencil = 0 
)
overridevirtual

Implements RenderingDevice.

◆ draw()

void RenderingDeviceSDL_GPU::draw ( uint32_t  vertex_count,
uint32_t  instance_count = 1,
uint32_t  first_vertex = 0,
uint32_t  first_instance = 0 
)
overridevirtual

Implements RenderingDevice.

◆ draw_indexed()

void RenderingDeviceSDL_GPU::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 
)
overridevirtual

Implements RenderingDevice.

◆ end_frame()

void RenderingDeviceSDL_GPU::end_frame ( )
overridevirtual

Implements RenderingDevice.

◆ framebuffer_create()

RID RenderingDeviceSDL_GPU::framebuffer_create ( const Vector< RenderPassAttachment > &  attachments)
overridevirtual

Implements RenderingDevice.

◆ framebuffer_destroy()

void RenderingDeviceSDL_GPU::framebuffer_destroy ( RID  framebuffer)
overridevirtual

Implements RenderingDevice.

◆ get_texture()

Texture RenderingDeviceSDL_GPU::get_texture ( RID  texture)
overridevirtual

Implements RenderingDevice.

◆ get_texture_size()

void RenderingDeviceSDL_GPU::get_texture_size ( RID  texture,
uint32_t &  width,
uint32_t &  height 
)
overridevirtual

Implements RenderingDevice.

◆ initialize()

bool RenderingDeviceSDL_GPU::initialize ( SDL_Window *  sdl_window)
overridevirtual

Implements RenderingDevice.

◆ pipeline_create()

RID RenderingDeviceSDL_GPU::pipeline_create ( const PipelineState state)
overridevirtual

Implements RenderingDevice.

◆ pipeline_destroy()

void RenderingDeviceSDL_GPU::pipeline_destroy ( RID  pipeline)
overridevirtual

Implements RenderingDevice.

◆ push_constant()

void RenderingDeviceSDL_GPU::push_constant ( const String name,
const void *  data,
size_t  size 
)
overridevirtual

Implements RenderingDevice.

◆ render_pass_begin()

void RenderingDeviceSDL_GPU::render_pass_begin ( RID  framebuffer,
const Viewport viewport,
const Scissor scissor 
)
overridevirtual

Implements RenderingDevice.

◆ render_pass_end()

void RenderingDeviceSDL_GPU::render_pass_end ( )
overridevirtual

Implements RenderingDevice.

◆ sampler_create()

RID RenderingDeviceSDL_GPU::sampler_create ( const SamplerState state)
overridevirtual

Implements RenderingDevice.

◆ sampler_destroy()

void RenderingDeviceSDL_GPU::sampler_destroy ( RID  sampler)
overridevirtual

Implements RenderingDevice.

◆ set_scissor()

void RenderingDeviceSDL_GPU::set_scissor ( const Scissor scissor)
overridevirtual

Implements RenderingDevice.

◆ set_viewport()

void RenderingDeviceSDL_GPU::set_viewport ( const Viewport viewport)
overridevirtual

Implements RenderingDevice.

◆ shader_create_from_bytecode()

RID RenderingDeviceSDL_GPU::shader_create_from_bytecode ( const void *  vertex_bytecode,
size_t  vertex_size,
const void *  fragment_bytecode,
size_t  fragment_size,
uint32_t  num_samplers = 0,
uint32_t  num_uniform_buffers = 1 
)

◆ shader_create_from_source()

RID RenderingDeviceSDL_GPU::shader_create_from_source ( const String vertex_src,
const String fragment_src 
)
overridevirtual

Implements RenderingDevice.

◆ shader_destroy()

void RenderingDeviceSDL_GPU::shader_destroy ( RID  shader)
overridevirtual

Implements RenderingDevice.

◆ shutdown()

void RenderingDeviceSDL_GPU::shutdown ( )
overridevirtual

Implements RenderingDevice.

◆ swap_buffers()

void RenderingDeviceSDL_GPU::swap_buffers ( )
overridevirtual

Implements RenderingDevice.

◆ texture_create()

RID RenderingDeviceSDL_GPU::texture_create ( const TextureFormat format,
void *  data = nullptr 
)
overridevirtual

Implements RenderingDevice.

◆ texture_destroy()

void RenderingDeviceSDL_GPU::texture_destroy ( RID  texture)
overridevirtual

Implements RenderingDevice.

◆ texture_generate_mipmaps()

void RenderingDeviceSDL_GPU::texture_generate_mipmaps ( RID  texture)
overridevirtual

Implements RenderingDevice.

◆ texture_get_native_handle()

uint32_t RenderingDeviceSDL_GPU::texture_get_native_handle ( RID  texture)
overridevirtual

Implements RenderingDevice.

◆ texture_update()

void RenderingDeviceSDL_GPU::texture_update ( RID  texture,
uint32_t  mip_level,
uint32_t  layer,
const void *  data,
size_t  size 
)
overridevirtual

Implements RenderingDevice.


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