Elevate Engine 1
Loading...
Searching...
No Matches
Elevate::OpenGLRendererAPI Class Reference

#include <OpenGLRendererAPI.h>

Inheritance diagram for Elevate::OpenGLRendererAPI:
Elevate::RendererAPI

Public Member Functions

GLenum DrawPrimitiveTypeToOpenGL (DrawPrimitiveType type) const
 
virtual void SetClearColor (const glm::vec4 &color) const override
 
virtual void SetViewport (int x, int y, int width, int height) const override
 
virtual void Clear () const override
 
virtual void FlushBuffers () const override
 
virtual void ClearTextureBindings () const override
 
virtual void DrawArray (const VertexArray *vao, DrawPrimitiveType primitive=DrawPrimitiveType::Triangles) const override
 
virtual void SetCullingState (bool enabled) const override
 
virtual void SetDepthWrittingState (bool enabled) const override
 
virtual void SetDepthTestingState (bool enabled) const override
 

Additional Inherited Members

- Public Types inherited from Elevate::RendererAPI
enum class  GraphicAPI { None = 0 , OpenGL = 1 }
 
- Static Public Member Functions inherited from Elevate::RendererAPI
static GraphicAPI GetAPI ()
 

Detailed Description

Definition at line 9 of file OpenGLRendererAPI.h.

Member Function Documentation

◆ Clear()

void Elevate::OpenGLRendererAPI::Clear ( ) const
overridevirtual

Implements Elevate::RendererAPI.

Definition at line 38 of file OpenGLRendererAPI.cpp.

39 {
40 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
41 }

◆ ClearTextureBindings()

void Elevate::OpenGLRendererAPI::ClearTextureBindings ( ) const
overridevirtual

Implements Elevate::RendererAPI.

Definition at line 48 of file OpenGLRendererAPI.cpp.

49 {
50 glActiveTexture(GL_TEXTURE0);
51 glBindTexture(GL_TEXTURE_2D, 0);
52 }

◆ DrawArray()

void Elevate::OpenGLRendererAPI::DrawArray ( const VertexArray vao,
DrawPrimitiveType  primitive = DrawPrimitiveType::Triangles 
) const
overridevirtual

Implements Elevate::RendererAPI.

Definition at line 54 of file OpenGLRendererAPI.cpp.

55 {
56 if (!glfwGetCurrentContext()) {
57 EE_CORE_ERROR("No OpenGL context active!");
58 return;
59 }
60
61 if (!vao)
62 {
63 EE_CORE_ERROR("VAO or IndexBuffer is null!");
64 return;
65 }
66
67 vao->Bind();
68
69 if (vao->GetIndexBuffer())
70 {
71 if (vao->GetIndexBuffer()->GetCount() == 0)
72 {
73 EE_CORE_ERROR("IndexBuffer has 0 indices!");
74 return;
75 }
76
77 GLCheck(glDrawElements(DrawPrimitiveTypeToOpenGL(primitive), vao->GetIndexBuffer()->GetCount(), GL_UNSIGNED_INT, nullptr));
78 }
79 else
80 {
81 for (const auto& vbo : vao->GetVertexBuffers())
82 {
83 uint32_t vertexCount = vbo->GetSize() / vbo->GetLayout().GetStride();
84 GLCheck(glDrawArrays(DrawPrimitiveTypeToOpenGL(primitive), 0, vertexCount));
85 }
86 }
87 }
#define GLCheck(x)
Definition GLDebug.h:11
GLenum DrawPrimitiveTypeToOpenGL(DrawPrimitiveType type) const

◆ DrawPrimitiveTypeToOpenGL()

GLenum Elevate::OpenGLRendererAPI::DrawPrimitiveTypeToOpenGL ( DrawPrimitiveType  type) const
inline

Definition at line 12 of file OpenGLRendererAPI.cpp.

13 {
14 switch (type)
15 {
16 case DrawPrimitiveType::Points: return GL_POINTS;
17 case DrawPrimitiveType::Lines: return GL_LINES;
18 case DrawPrimitiveType::LineStrip: return GL_LINE_STRIP;
19 case DrawPrimitiveType::Triangles: return GL_TRIANGLES;
20 case DrawPrimitiveType::TriangleStrip: return GL_TRIANGLE_STRIP;
21 case DrawPrimitiveType::TriangleFan: return GL_TRIANGLE_FAN;
22 case DrawPrimitiveType::Patches: return GL_PATCHES;
23 default: return GL_TRIANGLES;
24 }
25 return GL_TRIANGLES;
26 }

◆ FlushBuffers()

void Elevate::OpenGLRendererAPI::FlushBuffers ( ) const
overridevirtual

Implements Elevate::RendererAPI.

Definition at line 43 of file OpenGLRendererAPI.cpp.

44 {
45 glFlush();
46 }

◆ SetClearColor()

void Elevate::OpenGLRendererAPI::SetClearColor ( const glm::vec4 &  color) const
overridevirtual

Implements Elevate::RendererAPI.

Definition at line 28 of file OpenGLRendererAPI.cpp.

29 {
30 glClearColor(color.r, color.g, color.b, color.a);
31 }

◆ SetCullingState()

void Elevate::OpenGLRendererAPI::SetCullingState ( bool  enabled) const
overridevirtual

Implements Elevate::RendererAPI.

Definition at line 89 of file OpenGLRendererAPI.cpp.

90 {
91 if(enabled) glEnable(GL_CULL_FACE);
92 else glDisable(GL_CULL_FACE);
93 }

◆ SetDepthTestingState()

void Elevate::OpenGLRendererAPI::SetDepthTestingState ( bool  enabled) const
overridevirtual

Implements Elevate::RendererAPI.

Definition at line 98 of file OpenGLRendererAPI.cpp.

99 {
100 if (enabled) glEnable(GL_DEPTH_TEST);
101 else glDisable(GL_DEPTH_TEST);
102 }

◆ SetDepthWrittingState()

void Elevate::OpenGLRendererAPI::SetDepthWrittingState ( bool  enabled) const
overridevirtual

Implements Elevate::RendererAPI.

Definition at line 94 of file OpenGLRendererAPI.cpp.

95 {
96 glDepthMask(enabled ? GL_TRUE : GL_FALSE);
97 }

◆ SetViewport()

void Elevate::OpenGLRendererAPI::SetViewport ( int  x,
int  y,
int  width,
int  height 
) const
overridevirtual

Implements Elevate::RendererAPI.

Definition at line 33 of file OpenGLRendererAPI.cpp.

34 {
35 glViewport(x, y, width, height);
36 }

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