Claire's Game Engine
Full C++ Engine using OpenGL
Loading...
Searching...
No Matches
RendererGL Class Reference

RendererGL is an OpenGL-based renderer that implements IRenderer. It handles OpenGL initialization, shader loading, and drawing of 2D/3D objects, including sprites, meshes, and textures, using OpenGL API. More...

#include <RendererGL.h>

Inheritance diagram for RendererGL:
IRenderer

Public Member Functions

 RendererGL ()
 Constructor for RendererGL. Initializes member variables and sets up OpenGL context.
 
virtual ~RendererGL ()
 Destructor for RendererGL. Cleans up the OpenGL context and VertexArray objects.
 
 RendererGL (const RendererGL &)=delete
 
RendererGLoperator= (const RendererGL &)=delete
 
bool Initialize (Window &rWindow) override
 Initializes the OpenGL renderer with the given window.
 
void LoadShaders ()
 Loads the shaders used by the renderer for various components.
 
void BeginDraw () override
 Begins the drawing process, clearing the screen and setting up necessary OpenGL states.
 
void Draw () override
 Draws all the rendered components (meshes, sprites, etc.).
 
void EndDraw () override
 Ends the drawing process by swapping the buffers.
 
void DrawRect (const Rectangle &rRect, Color pColor) override
 Draws a filled rectangle on the screen with the specified color.
 
void DrawRectLine (const Rectangle &rRect, Color pColor) override
 Draws the outline of a rectangle on the screen with the specified color.
 
void DrawAllSprites ()
 Draws all sprites currently in the render queue.
 
void DrawSprite (const Actor &rOwner, Texture *rTexture, Rectangle rec, Flip flip=Flip::None) override
 Draws a sprite on the screen using the specified texture and transformation.
 
void DrawAllMeshes ()
 Draws all meshes currently in the render queue.
 
void DrawMesh (Mesh *pMesh, int pTextureIndex, const Matrix4 &transform, Vector2 tiling=Vector2::ONE) override
 Draws a mesh with the specified texture index and transformation.
 
void SetViewMatrix (const Matrix4 &pView) override
 Sets the view matrix used for rendering.
 
void Close () override
 Closes the OpenGL context and cleans up resources.
 
RendererType GetType () override
 Returns the type of renderer (OpenGL).
 
- Public Member Functions inherited from IRenderer
virtual ~IRenderer ()=default
 
void AddRenderComponent (RenderComponent *pRenderComponent)
 Adds a render component to the list of components to be rendered.
 
void RemoveRenderComponent (RenderComponent *pRenderComponent)
 Removes a render component from the list of components to be rendered.
 
void AddDebugRender (DebugRenderInterface *pDebugRender)
 Adds a debug render component to the renderer.
 
void RemoveDebugRender (DebugRenderInterface *pDebugRender)
 Removes a debug render component from the renderer.
 

Static Public Member Functions

static MeshGetCubeMesh ()
 Gets the cube mesh used for rendering.
 

Static Public Attributes

static ShaderProgram mSimpleMeshShaderProgram = ShaderProgram()
 
static ShaderProgram mTesselationMeshShaderProgram = ShaderProgram()
 
static ShaderProgram mGrassShaderProgram = ShaderProgram()
 
static ShaderProgram mSandShaderProgram = ShaderProgram()
 
static ShaderProgram mWaveShaderProgram = ShaderProgram()
 

Additional Inherited Members

- Public Types inherited from IRenderer
enum class  Flip { None = SDL_FLIP_NONE , Horizontal = SDL_FLIP_HORIZONTAL , Vertical = SDL_FLIP_VERTICAL }
 Enum to represent the different flipping modes for rendering sprites. This allows flipping a sprite horizontally or vertically, or no flipping at all. More...
 
enum class  RendererType { SDL , OPENGL }
 Enum representing the type of renderer (either SDL or OpenGL). This helps identify which underlying rendering system is being used. More...
 
- Protected Attributes inherited from IRenderer
std::vector< RenderComponent * > mViewportRenderComponents
 List of render components associated with the viewport.
 
std::vector< RenderComponent * > mWorldRenderComponents
 List of render components associated with the world (3D space)
 
std::vector< DebugRenderInterface * > mDebugRenders
 List of debug render components.
 

Detailed Description

RendererGL is an OpenGL-based renderer that implements IRenderer. It handles OpenGL initialization, shader loading, and drawing of 2D/3D objects, including sprites, meshes, and textures, using OpenGL API.

Constructor & Destructor Documentation

◆ RendererGL() [1/2]

RendererGL::RendererGL ( )

Constructor for RendererGL. Initializes member variables and sets up OpenGL context.

◆ ~RendererGL()

RendererGL::~RendererGL ( )
virtual

Destructor for RendererGL. Cleans up the OpenGL context and VertexArray objects.

◆ RendererGL() [2/2]

RendererGL::RendererGL ( const RendererGL & )
delete

Member Function Documentation

◆ BeginDraw()

void RendererGL::BeginDraw ( )
overridevirtual

Begins the drawing process, clearing the screen and setting up necessary OpenGL states.

Implements IRenderer.

◆ Close()

void RendererGL::Close ( )
overridevirtual

Closes the OpenGL context and cleans up resources.

Implements IRenderer.

◆ Draw()

void RendererGL::Draw ( )
overridevirtual

Draws all the rendered components (meshes, sprites, etc.).

Implements IRenderer.

◆ DrawAllMeshes()

void RendererGL::DrawAllMeshes ( )

Draws all meshes currently in the render queue.

◆ DrawAllSprites()

void RendererGL::DrawAllSprites ( )

Draws all sprites currently in the render queue.

◆ DrawMesh()

void RendererGL::DrawMesh ( Mesh * pMesh,
int pTextureIndex,
const Matrix4 & transform,
Vector2 tiling = Vector2::ONE )
overridevirtual

Draws a mesh with the specified texture index and transformation.

Parameters
pMeshThe mesh to be drawn.
pTextureIndexThe texture index of the mesh.
transformThe transformation matrix to apply to the mesh.
tilingThe tiling factor for the texture.

Reimplemented from IRenderer.

◆ DrawRect()

void RendererGL::DrawRect ( const Rectangle & rRect,
Color pColor )
overridevirtual

Draws a filled rectangle on the screen with the specified color.

Parameters
rRectThe rectangle to be drawn.
pColorThe color of the rectangle.

Implements IRenderer.

◆ DrawRectLine()

void RendererGL::DrawRectLine ( const Rectangle & rRect,
Color pColor )
overridevirtual

Draws the outline of a rectangle on the screen with the specified color.

Parameters
rRectThe rectangle to be drawn.
pColorThe color of the rectangle outline.

Implements IRenderer.

◆ DrawSprite()

void RendererGL::DrawSprite ( const Actor & rOwner,
Texture * rTexture,
Rectangle rec,
Flip flip = Flip::None )
overridevirtual

Draws a sprite on the screen using the specified texture and transformation.

Parameters
rOwnerThe actor owning the sprite (used for context, not directly here).
rTexturePointer to the texture to render.
recThe rectangle that defines the position and size of the sprite on screen.
flipSpecifies sprite flipping (horizontal, vertical, etc.).

Implements IRenderer.

◆ EndDraw()

void RendererGL::EndDraw ( )
overridevirtual

Ends the drawing process by swapping the buffers.

Implements IRenderer.

◆ GetCubeMesh()

Mesh * RendererGL::GetCubeMesh ( )
static

Gets the cube mesh used for rendering.

Returns
A pointer to the cube mesh.

◆ GetType()

IRenderer::RendererType RendererGL::GetType ( )
overridevirtual

Returns the type of renderer (OpenGL).

Returns
RendererType::OPENGL.

Implements IRenderer.

◆ Initialize()

bool RendererGL::Initialize ( Window & rWindow)
overridevirtual

Initializes the OpenGL renderer with the given window.

Parameters
rWindowThe window to render the graphics onto.
Returns
Returns true if initialization is successful, false otherwise.

Implements IRenderer.

◆ LoadShaders()

void RendererGL::LoadShaders ( )

Loads the shaders used by the renderer for various components.

◆ operator=()

RendererGL & RendererGL::operator= ( const RendererGL & )
delete

◆ SetViewMatrix()

void RendererGL::SetViewMatrix ( const Matrix4 & pView)
overridevirtual

Sets the view matrix used for rendering.

Parameters
pViewThe new view matrix.

Reimplemented from IRenderer.

Member Data Documentation

◆ mGrassShaderProgram

ShaderProgram RendererGL::mGrassShaderProgram = ShaderProgram()
static

◆ mSandShaderProgram

ShaderProgram RendererGL::mSandShaderProgram = ShaderProgram()
static

◆ mSimpleMeshShaderProgram

ShaderProgram RendererGL::mSimpleMeshShaderProgram = ShaderProgram()
static

◆ mTesselationMeshShaderProgram

ShaderProgram RendererGL::mTesselationMeshShaderProgram = ShaderProgram()
static

◆ mWaveShaderProgram

ShaderProgram RendererGL::mWaveShaderProgram = ShaderProgram()
static

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