5 void GLAPIENTRY GLDebugMessageCallback(GLenum source, GLenum type, GLuint
id,
6 GLenum severity, [[maybe_unused]] GLsizei length,
7 const GLchar* message, [[maybe_unused]]
const void* param) {
8 const char* source_, * type_, * severity_;
12 case GL_DEBUG_SOURCE_API: source_ =
"API";
break;
13 case GL_DEBUG_SOURCE_WINDOW_SYSTEM: source_ =
"WINDOW_SYSTEM";
break;
14 case GL_DEBUG_SOURCE_SHADER_COMPILER: source_ =
"SHADER_COMPILER";
break;
15 case GL_DEBUG_SOURCE_THIRD_PARTY: source_ =
"THIRD_PARTY";
break;
16 case GL_DEBUG_SOURCE_APPLICATION: source_ =
"APPLICATION";
break;
17 case GL_DEBUG_SOURCE_OTHER: source_ =
"OTHER";
break;
18 default: source_ =
"<SOURCE>";
break;
23 case GL_DEBUG_TYPE_ERROR: type_ =
"ERROR";
break;
24 case GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR: type_ =
"DEPRECATED_BEHAVIOR";
break;
25 case GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR: type_ =
"UDEFINED_BEHAVIOR";
break;
26 case GL_DEBUG_TYPE_PORTABILITY: type_ =
"PORTABILITY";
break;
27 case GL_DEBUG_TYPE_PERFORMANCE: type_ =
"PERFORMANCE";
break;
28 case GL_DEBUG_TYPE_OTHER: type_ =
"OTHER";
break;
29 case GL_DEBUG_TYPE_MARKER: type_ =
"MARKER";
break;
30 default: type_ =
"<TYPE>";
break;
35 case GL_DEBUG_SEVERITY_HIGH: severity_ =
"HIGH";
break;
36 case GL_DEBUG_SEVERITY_MEDIUM: severity_ =
"MEDIUM";
break;
37 case GL_DEBUG_SEVERITY_LOW: severity_ =
"LOW";
break;
38 case GL_DEBUG_SEVERITY_NOTIFICATION: severity_ =
"NOTIFICATION";
break;
39 default: severity_ =
"<SEVERITY>";
break;
43 std::ostringstream stream;
44 stream <<
"| Id: " <<
id <<
" | Severity: " << severity_ <<
" | Type: " << type_ <<
" | Source: (" << source_ <<
") | Message: " << message <<
" |" << std::endl;
45 std::string output = stream.str();
47 std::string dashes(output.size() - 3,
'-');
50 case GL_DEBUG_SEVERITY_HIGH:
53 case GL_DEBUG_SEVERITY_MEDIUM:
56 case GL_DEBUG_SEVERITY_LOW:
59 case GL_DEBUG_SEVERITY_NOTIFICATION:
74 glEnable(GL_DEBUG_OUTPUT);
75 glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
76 glDebugMessageCallback(GLDebugMessageCallback,
nullptr);
77 glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0,
nullptr, GL_TRUE);
80 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
84 glEnable(GL_DEPTH_TEST);
89 glViewport(x, y, width, height);
94 glClearColor(color.r, color.g, color.b, color.a);
98 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
102 glDrawElements(GL_TRIANGLES,
static_cast<GLsizei
>(elementCount), GL_UNSIGNED_INT,
nullptr);
106 glDrawElementsInstanced(GL_TRIANGLES, 6, GL_UNSIGNED_INT,
nullptr, instanceCount);
110 glEnable(GL_DEPTH_TEST);
111 glDepthFunc(GL_LESS);
116 glDisable(GL_DEPTH_TEST);
122 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
#define CORI_CORE_ERROR(...)
#define CORI_CORE_WARN(...)
#define CORI_CORE_INFO(...)
#define CORI_CORE_TRACE(...)
#define CORI_CORE_TRACE_TAGGED(...)
void SetDepthMask(const bool mode) override
void ClearFramebuffer() override
void SetClearColor(const glm::vec4 &color) override
void DrawElementsInstancedTriangles(const uint32_t instanceCount) override
void DrawElementsTriangles(const uint32_t elementCount) override
void EnableBlending() override
void DisableDepthTest() override
void DisableBlending() override
void SetViewport(const int32_t x, const int32_t y, const int32_t width, const int32_t height) override
void EnableDepthTest() override
Almost everything connected to graphics is in this namespace.