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

Renderer struct. More...

#include <ember_core.h>

Inheritance diagram for Renderer:
OpenglRenderer

Public Member Functions

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

Public Attributes

SDL_Window * window = nullptr
 
int viewport [2] = {480, 270}
 
RendererType type = OPENGL
 

Detailed Description

Renderer struct.

Version
0.0.1

Constructor & Destructor Documentation

◆ ~Renderer()

virtual Renderer::~Renderer ( )
virtualdefault

◆ Renderer()

Renderer::Renderer ( )
default

Member Function Documentation

◆ BeginCanvas()

virtual void Renderer::BeginCanvas ( )
pure virtual

Begin Canvas Procedure.

  • Used for Draw Static UI
Version
0.0.7
Returns
void

Implemented in OpenglRenderer.

◆ BeginDrawing()

virtual void Renderer::BeginDrawing ( const glm::mat4 &  view_projection = 0)
pure virtual

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

Implemented in OpenglRenderer.

◆ BeginMode2D()

virtual void Renderer::BeginMode2D ( const Camera2D camera)
pure virtual

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

Implemented in OpenglRenderer.

◆ ClearBackground()

virtual void Renderer::ClearBackground ( const Color color)
pure virtual

Window background color.

Version
0.0.1
Parameters
colorColor in RGBA
Returns
void

Implemented in OpenglRenderer.

◆ Destroy()

virtual void Renderer::Destroy ( )
pure virtual

Implemented in OpenglRenderer.

◆ DrawCircle()

virtual void Renderer::DrawCircle ( glm::vec3  position,
float  radius,
const Color color,
int  segments = 32 
)
pure virtual

Implemented in OpenglRenderer.

◆ DrawCircleFilled()

virtual void Renderer::DrawCircleFilled ( glm::vec3  position,
float  radius,
const Color color,
int  segments = 32 
)
pure virtual

Implemented in OpenglRenderer.

◆ DrawLine()

virtual void Renderer::DrawLine ( glm::vec3  start,
glm::vec3  end,
const Color color,
float  thickness = 1.0f 
)
pure virtual

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
    

Implemented in OpenglRenderer.

◆ DrawRect()

virtual void Renderer::DrawRect ( const Transform2D transform,
glm::vec2  size,
const Color color,
float  thickness = 1.f 
)
pure virtual

Draw rectangle.

Parameters
transform
sizerectangle size
colorColor in RGBA
thickness
* * *

* float
  • * Line thickness
    Returns
    void
    Version
    0.0.6

Implemented in OpenglRenderer.

◆ DrawRectFilled()

virtual void Renderer::DrawRectFilled ( const Transform2D transform,
glm::vec2  size,
const Color color,
float  thickness = 1.f 
)
pure virtual

Draw rectangle filled.

Parameters
transform
sizerectangle size
colorColor in RGBA
thickness
Returns
* *


* * void
  • *
    Version
    0.0.6

Implemented in OpenglRenderer.

◆ DrawText()

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

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

Implemented in OpenglRenderer.

◆ DrawTexture()

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

Draw Texture quad at given Rectangle source.

  • Draw the texture
Version
0.0.1
Parameters

Implemented in OpenglRenderer.

◆ DrawTextureEx()

virtual void Renderer::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} 
)
pure virtual

Draw Texture quad extended.

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




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

Implemented in OpenglRenderer.

◆ DrawTriangle()

virtual void Renderer::DrawTriangle ( glm::vec3  p0,
glm::vec3  p1,
glm::vec3  p2,
const Color color 
)
pure virtual

Implemented in OpenglRenderer.

◆ DrawTriangleFilled()

virtual void Renderer::DrawTriangleFilled ( glm::vec3  p0,
glm::vec3  p1,
glm::vec3  p2,
const Color color 
)
pure virtual

Implemented in OpenglRenderer.

◆ EndCanvas()

virtual void Renderer::EndCanvas ( )
pure virtual

End Canvas Procedure.

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

Implemented in OpenglRenderer.

◆ EndDrawing()

virtual void Renderer::EndDrawing ( )
pure virtual

End of the drawing procedure (swap buffers)

Version
0.0.1
Returns
void

Implemented in OpenglRenderer.

◆ EndMode2D()

virtual void Renderer::EndMode2D ( )
pure virtual

End 2D mode.

  • Restore the default view_matrix
Version
0.0.2
Returns
void

Implemented in OpenglRenderer.

◆ Flush()

virtual void Renderer::Flush ( )
pure virtual

Implemented in OpenglRenderer.

◆ FlushText()

virtual void Renderer::FlushText ( )
pure virtual

Implemented in OpenglRenderer.

◆ GetContext()

virtual void* Renderer::GetContext ( )
pure virtual

Implemented in OpenglRenderer.

◆ GetDefaultShader()

virtual Shader* Renderer::GetDefaultShader ( )
pure virtual

Implemented in OpenglRenderer.

◆ GetTextShader()

virtual Shader* Renderer::GetTextShader ( )
pure virtual

Implemented in OpenglRenderer.

◆ Initialize()

virtual void Renderer::Initialize ( )
pure virtual

Implemented in OpenglRenderer.

◆ LoadFont()

virtual Font Renderer::LoadFont ( const std::string &  file_path,
int  font_size 
)
pure virtual

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

Implemented in OpenglRenderer.

◆ LoadTexture()

virtual Texture Renderer::LoadTexture ( const std::string &  file_path)
pure virtual

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
    

Implemented in OpenglRenderer.

◆ Resize()

virtual void Renderer::Resize ( int  view_width,
int  view_height 
)
pure virtual

Implemented in OpenglRenderer.

◆ SetContext()

virtual void Renderer::SetContext ( const void *  ctx)
pure virtual

Implemented in OpenglRenderer.

◆ UnloadFont()

virtual void Renderer::UnloadFont ( const Font font)
pure virtual

Unload the Font from CPU/GPU (cleanup)

Version
0.0.9
Parameters
fontThe loaded Font
@return




* * * *
  • void

Implemented in OpenglRenderer.

◆ UnloadTexture()

virtual void Renderer::UnloadTexture ( const Texture texture)
pure virtual

Unload the Texture from GPU (cleanup)

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

Implemented in OpenglRenderer.

Member Data Documentation

◆ type

RendererType Renderer::type = OPENGL

◆ viewport

int Renderer::viewport[2] = {480, 270}

◆ window

SDL_Window* Renderer::window = nullptr

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