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

#include <ogl_renderer.h>

Inheritance diagram for OpenGLRenderer:
Renderer

Public Member Functions

 ~OpenGLRenderer () override
 
bool initialize (int w, int h, SDL_Window *window) override
 
std::shared_ptr< GpuBufferallocate_gpu_buffer (GpuBufferType type) override
 
std::shared_ptr< GpuVertexLayoutcreate_vertex_layout (const GpuBuffer *vertex_buffer, const GpuBuffer *index_buffer, const std::vector< VertexAttribute > &attributes, uint32_t stride) override
 
Uint32 load_texture_from_file (const std::string &path) override
 
Uint32 load_texture_from_memory (const unsigned char *buffer, size_t size, const std::string &name="") override
 
Uint32 load_texture_from_raw_data (const unsigned char *data, int w, int h, int channels=4, const std::string &name="") override
 
void begin_frame () override
 
void begin_shadow_pass () override
 
void render_shadow_pass (const glm::mat4 &light_space_matrix) override
 
void end_shadow_pass () override
 
void begin_render_target () override
 
void render_main_target (const Camera3D &camera, const Transform3D &camera_transform, const glm::mat4 &light_space_matrix, const std::vector< DirectionalLight > &directional_lights, const std::vector< std::pair< Transform3D, SpotLight >> &spot_lights) override
 
void end_render_target () override
 
void begin_environment_pass () override
 
void render_environment_pass (const Camera3D &camera) override
 
void end_environment_pass () override
 
void add_to_render_batch (const Transform3D &transform, const MeshRef &mesh_ref, const MaterialRef &mat_ref) override
 
void add_to_shadow_batch (const Transform3D &transform, const MeshRef &mesh_ref) override
 
void resize (int w, int h) override
 
void cleanup () override
 
void swap_chain () override
 
- Public Member Functions inherited from Renderer
virtual ~Renderer ()=default
 
void register_material (const char *name, const Material &material)
 

Additional Inherited Members

- Public Attributes inherited from Renderer
std::unordered_map< std::string, Uint32 > _textures
 
std::unordered_map< std::string, std::vector< MeshInstance3D > > _meshes
 
std::unordered_map< std::string, std::vector< Material > > _materials
 
- Protected Attributes inherited from Renderer
SDL_Window * _window = nullptr
 
std::unique_ptr< Shader_default_shader = nullptr
 
std::unique_ptr< Shader_shadow_shader = nullptr
 
std::unique_ptr< Shader_environment_shader = nullptr
 
WorldEnvironment_world_environment = nullptr
 
std::shared_ptr< Framebuffershadow_map_fbo = nullptr
 
int width = 0
 
int height = 0
 
std::shared_ptr< GpuBufferinstance_buffer
 
std::unordered_map< MeshMaterialKey, RenderBatch, MeshMaterialKeyHash_instanced_batches
 
std::unordered_map< const MeshInstance3D *, RenderBatchshadow_batches
 
size_t max_instances = 1000
 

Constructor & Destructor Documentation

◆ ~OpenGLRenderer()

OpenGLRenderer::~OpenGLRenderer ( )
override

Member Function Documentation

◆ add_to_render_batch()

void OpenGLRenderer::add_to_render_batch ( const Transform3D transform,
const MeshRef mesh_ref,
const MaterialRef mat_ref 
)
overridevirtual

Implements Renderer.

◆ add_to_shadow_batch()

void OpenGLRenderer::add_to_shadow_batch ( const Transform3D transform,
const MeshRef mesh_ref 
)
overridevirtual

Implements Renderer.

◆ allocate_gpu_buffer()

std::shared_ptr< GpuBuffer > OpenGLRenderer::allocate_gpu_buffer ( GpuBufferType  type)
overridevirtual

Implements Renderer.

◆ begin_environment_pass()

void OpenGLRenderer::begin_environment_pass ( )
overridevirtual

Implements Renderer.

◆ begin_frame()

void OpenGLRenderer::begin_frame ( )
overridevirtual

Implements Renderer.

◆ begin_render_target()

void OpenGLRenderer::begin_render_target ( )
overridevirtual

Implements Renderer.

◆ begin_shadow_pass()

void OpenGLRenderer::begin_shadow_pass ( )
overridevirtual

Implements Renderer.

◆ cleanup()

void OpenGLRenderer::cleanup ( )
overridevirtual

Implements Renderer.

◆ create_vertex_layout()

std::shared_ptr< GpuVertexLayout > OpenGLRenderer::create_vertex_layout ( const GpuBuffer vertex_buffer,
const GpuBuffer index_buffer,
const std::vector< VertexAttribute > &  attributes,
uint32_t  stride 
)
overridevirtual

Implements Renderer.

◆ end_environment_pass()

void OpenGLRenderer::end_environment_pass ( )
overridevirtual

Implements Renderer.

◆ end_render_target()

void OpenGLRenderer::end_render_target ( )
overridevirtual

Implements Renderer.

◆ end_shadow_pass()

void OpenGLRenderer::end_shadow_pass ( )
overridevirtual

Implements Renderer.

◆ initialize()

bool OpenGLRenderer::initialize ( int  w,
int  h,
SDL_Window *  window 
)
overridevirtual

Implements Renderer.

◆ load_texture_from_file()

GLuint OpenGLRenderer::load_texture_from_file ( const std::string &  path)
overridevirtual

Implements Renderer.

◆ load_texture_from_memory()

GLuint OpenGLRenderer::load_texture_from_memory ( const unsigned char *  buffer,
size_t  size,
const std::string &  name = "" 
)
overridevirtual

Implements Renderer.

◆ load_texture_from_raw_data()

GLuint OpenGLRenderer::load_texture_from_raw_data ( const unsigned char *  data,
int  w,
int  h,
int  channels = 4,
const std::string &  name = "" 
)
overridevirtual

Implements Renderer.

◆ render_environment_pass()

void OpenGLRenderer::render_environment_pass ( const Camera3D camera)
overridevirtual

Implements Renderer.

◆ render_main_target()

void OpenGLRenderer::render_main_target ( const Camera3D camera,
const Transform3D camera_transform,
const glm::mat4 &  light_space_matrix,
const std::vector< DirectionalLight > &  directional_lights,
const std::vector< std::pair< Transform3D, SpotLight >> &  spot_lights 
)
overridevirtual

Implements Renderer.

◆ render_shadow_pass()

void OpenGLRenderer::render_shadow_pass ( const glm::mat4 &  light_space_matrix)
overridevirtual

Implements Renderer.

◆ resize()

void OpenGLRenderer::resize ( int  w,
int  h 
)
overridevirtual

Implements Renderer.

◆ swap_chain()

void OpenGLRenderer::swap_chain ( )
overridevirtual

Implements Renderer.


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