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

#include <ember_gl.h>

Inheritance diagram for OpenglRenderer:
Renderer

Public Member Functions

 OpenglRenderer ()=default
 
OpenglShaderGetDefaultShader () override
 
OpenglShaderGetTextShader () override
 
void Initialize () override
 
void Flush () override
 
void FlushText () override
 
void Resize (int view_width, int view_height) override
 
void SetContext (const void *ctx) override
 
void * GetContext () override
 
void Destroy () override
 
Texture LoadTexture (const std::string &file_path) override
 Load a texture on GPU given a file path. More...
 
Font LoadFont (const std::string &file_path, int font_size) override
 Load a TTF font on GPU given a file path. More...
 
void UnloadFont (const Font &font) override
 Unload the Font from CPU/GPU (cleanup) More...
 
void UnloadTexture (const Texture &texture) override
 Unload the Texture from GPU (cleanup) More...
 
void ClearBackground (const Color &color) override
 Window background color. More...
 
void BeginDrawing (const glm::mat4 &view_projection=0) override
 Starting of the drawing procedure. More...
 
void EndDrawing () override
 End of the drawing procedure (swap buffers) More...
 
void DrawText (const Font &font, const std::string &text, const Transform2D &transform, Color color, float font_size, const ShaderEffect &shader_effect={}, float kerning=0.0f) override
 Draw glyphs given a Loaded Font and text. More...
 
void DrawTexture (const Texture &texture, const Transform2D &transform, glm::vec2 size, const Color &color={255, 255, 255, 255}) override
 Draw Texture quad at given Rectangle source. More...
 
void DrawTextureEx (const Texture &texture, const ember::Rectangle &source, const ember::Rectangle &dest, glm::vec2 origin, float rotation, float zIndex=0.0f, const Color &color={255, 255, 255, 255}) override
 Draw Texture quad extended. More...
 
void DrawLine (glm::vec3 start, glm::vec3 end, const Color &color, float thickness) override
 Draw Lines between two points. More...
 
void DrawRect (const Transform2D &transform, glm::vec2 size, const Color &color, float thickness) override
 Draw rectangle. More...
 
void DrawRectFilled (const Transform2D &transform, glm::vec2 size, const Color &color, float thickness) override
 Draw rectangle filled. More...
 
void DrawTriangle (glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, const Color &color) override
 
void DrawTriangleFilled (glm::vec3 p0, glm::vec3 p1, glm::vec3 p2, const Color &color) override
 
void DrawCircle (glm::vec3 position, float radius, const Color &color, int segments=32) override
 
void DrawCircleFilled (glm::vec3 position, float radius, const Color &color, int segments=32) override
 
void BeginMode2D (const Camera2D &camera) override
 Begin 2D mode. More...
 
void EndMode2D () override
 End 2D mode. More...
 
void BeginCanvas () override
 Begin Canvas Procedure. More...
 
void EndCanvas () override
 End Canvas Procedure. More...
 
- Public Member Functions inherited from Renderer
virtual ~Renderer ()=default
 
 Renderer ()=default
 

Public Attributes

OpenglShaderdefault_shader = nullptr
 
OpenglShadertext_shader = nullptr
 
- Public Attributes inherited from Renderer
SDL_Window * window = nullptr
 
int viewport [2] = {480, 270}
 
RendererType type = OPENGL
 

Constructor & Destructor Documentation

◆ OpenglRenderer()

OpenglRenderer::OpenglRenderer ( )
default

Member Function Documentation

◆ BeginCanvas()

void OpenglRenderer::BeginCanvas ( )
overridevirtual

Begin Canvas Procedure.

  • Used for Draw Static UI
Version
0.0.7
Returns
void

Implements Renderer.

◆ BeginDrawing()

void OpenglRenderer::BeginDrawing ( const glm::mat4 &  view_projection = 0)
overridevirtual

Starting of the drawing procedure.

  • Clear the background and start drawing
  • Draw between
  * * * *

  *
  • BeginDrawing and EndDrawing
    • Orthographic projection
    • Ordered rendering
  * Usage:



  * * BeginDrawing();
  • * * // Draw anything without needing a camera

EndDrawing();

  * @version
  0.0.1


  * @return void

Implements Renderer.

◆ BeginMode2D()

void OpenglRenderer::BeginMode2D ( const Camera2D camera)
overridevirtual

Begin 2D mode.

Usage: BeginMode2D(camera);

Drawing



* * *
with
  • * the camera view_matrix

EndMode2D();

Version
0.0.2
Parameters
camerathe camera 2D
  • (view_matrix)
Returns
  • * void

Implements Renderer.

◆ ClearBackground()

void OpenglRenderer::ClearBackground ( const Color color)
overridevirtual

Window background color.

Version
0.0.1
Parameters
colorColor in RGBA
Returns
void

Implements Renderer.

◆ Destroy()

void OpenglRenderer::Destroy ( )
overridevirtual

Implements Renderer.

◆ DrawCircle()

void OpenglRenderer::DrawCircle ( glm::vec3  position,
float  radius,
const Color color,
int  segments = 32 
)
overridevirtual

Implements Renderer.

◆ DrawCircleFilled()

void OpenglRenderer::DrawCircleFilled ( glm::vec3  position,
float  radius,
const Color color,
int  segments = 32 
)
overridevirtual

Implements Renderer.

◆ DrawLine()

void OpenglRenderer::DrawLine ( glm::vec3  start,
glm::vec3  end,
const Color color,
float  thickness 
)
overridevirtual

Draw Lines between two points.

Version
0.0.1
Parameters
startvec2 start point
end
*
vec2

*
end
  • point
    Parameters
    Vec2start
    Vec2end
    colorColor in RGBA
    thicknessfloat Line thickness
    @return
    void
    

Implements Renderer.

◆ DrawRect()

void OpenglRenderer::DrawRect ( const Transform2D transform,
glm::vec2  size,
const Color color,
float  thickness 
)
overridevirtual

Draw rectangle.

Parameters
transform
sizerectangle size
colorColor in RGBA
thickness
* * *

* float
  • * Line thickness
    Returns
    void
    Version
    0.0.6

Implements Renderer.

◆ DrawRectFilled()

void OpenglRenderer::DrawRectFilled ( const Transform2D transform,
glm::vec2  size,
const Color color,
float  thickness 
)
overridevirtual

Draw rectangle filled.

Parameters
transform
sizerectangle size
colorColor in RGBA
thickness
Returns
* *


* * void
  • *
    Version
    0.0.6

Implements Renderer.

◆ DrawText()

void OpenglRenderer::DrawText ( const Font font,
const std::string &  text,
const Transform2D transform,
Color  color,
float  font_size,
const ShaderEffect shader_effect = {},
float  kerning = 0.0f 
)
overridevirtual

Draw glyphs given a Loaded Font and text.

  • Draw the text
See also
Font
Glyph
  @version



  * * *
  • * 0.0.1
    Parameters
    fontThe loaded Font TTF
    textThe text to draw, can be dynamic
    transform
    transform

Implements Renderer.

◆ DrawTexture()

void OpenglRenderer::DrawTexture ( const Texture texture,
const Transform2D transform,
glm::vec2  size,
const Color color = {255, 255, 255, 255} 
)
overridevirtual

Draw Texture quad at given Rectangle source.

  • Draw the texture
Version
0.0.1
Parameters

Implements Renderer.

◆ DrawTextureEx()

void OpenglRenderer::DrawTextureEx ( const Texture texture,
const ember::Rectangle source,
const ember::Rectangle dest,
glm::vec2  origin,
float  rotation,
float  zIndex = 0.0f,
const Color color = {255, 255, 255, 255} 
)
overridevirtual

Draw Texture quad extended.

  • Draw the texture with extended parameters, ex: spritesheet's
*




* * * * @version
  • * 0.0.1
    Parameters
    textureThe loaded Texture
    rectThe source Rectangle

Implements Renderer.

◆ DrawTriangle()

void OpenglRenderer::DrawTriangle ( glm::vec3  p0,
glm::vec3  p1,
glm::vec3  p2,
const Color color 
)
overridevirtual

Implements Renderer.

◆ DrawTriangleFilled()

void OpenglRenderer::DrawTriangleFilled ( glm::vec3  p0,
glm::vec3  p1,
glm::vec3  p2,
const Color color 
)
overridevirtual

Implements Renderer.

◆ EndCanvas()

void OpenglRenderer::EndCanvas ( )
overridevirtual

End Canvas Procedure.

  • Restore GL state
See also
BeginCanvas
Version
0.0.7
Returns
* *
void

Implements Renderer.

◆ EndDrawing()

void OpenglRenderer::EndDrawing ( )
overridevirtual

End of the drawing procedure (swap buffers)

Version
0.0.1
Returns
void

Implements Renderer.

◆ EndMode2D()

void OpenglRenderer::EndMode2D ( )
overridevirtual

End 2D mode.

  • Restore the default view_matrix
Version
0.0.2
Returns
void

Implements Renderer.

◆ Flush()

void OpenglRenderer::Flush ( )
overridevirtual

Implements Renderer.

◆ FlushText()

void OpenglRenderer::FlushText ( )
overridevirtual

Implements Renderer.

◆ GetContext()

void * OpenglRenderer::GetContext ( )
overridevirtual

Implements Renderer.

◆ GetDefaultShader()

OpenglShader * OpenglRenderer::GetDefaultShader ( )
overridevirtual

Implements Renderer.

◆ GetTextShader()

OpenglShader * OpenglRenderer::GetTextShader ( )
overridevirtual

Implements Renderer.

◆ Initialize()

void OpenglRenderer::Initialize ( )
overridevirtual

Implements Renderer.

◆ LoadFont()

Font OpenglRenderer::LoadFont ( const std::string &  file_path,
int  font_size 
)
overridevirtual

Load a TTF font on GPU given a file path.

  • Bake the font on GPU
Version
0.0.1
* * * @param
  • * file_path the path to the file in assets folder
    Returns
    Font

Implements Renderer.

◆ LoadTexture()

Texture OpenglRenderer::LoadTexture ( const std::string &  file_path)
overridevirtual

Load a texture on GPU given a file path.

  • Create a texture on GPU
    See also
    Texture
    * * @version
    
    
    * *
    
  • 0.0.1
    Parameters
    file_paththe path to the file in assets folder
    Returns
    * * Texture
    

Implements Renderer.

◆ Resize()

void OpenglRenderer::Resize ( int  view_width,
int  view_height 
)
overridevirtual

Implements Renderer.

◆ SetContext()

void OpenglRenderer::SetContext ( const void *  ctx)
overridevirtual

Implements Renderer.

◆ UnloadFont()

void OpenglRenderer::UnloadFont ( const Font font)
overridevirtual

Unload the Font from CPU/GPU (cleanup)

Version
0.0.9
Parameters
fontThe loaded Font
@return




* * * *
  • void

Implements Renderer.

◆ UnloadTexture()

void OpenglRenderer::UnloadTexture ( const Texture texture)
overridevirtual

Unload the Texture from GPU (cleanup)

Version
0.0.1
Parameters
textureThe loaded Texture
* * * @return
  • * * void

Implements Renderer.

Member Data Documentation

◆ default_shader

OpenglShader* OpenglRenderer::default_shader = nullptr

◆ text_shader

OpenglShader* OpenglRenderer::text_shader = nullptr

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