Files
4k_synthwave/src/debug.h
2025-06-15 10:24:37 +03:00

49 lines
1.3 KiB
C

// This header contains some useful functions for debugging OpenGL.
// Remember to disable them when building your final releases.
#include <windows.h>
#include <GL/gl.h>
#include "glext.h"
#define STRINGIFY2(x) #x // Thanks sooda!
#define STRINGIFY(x) STRINGIFY2(x)
#define CHECK_ERRORS() assertGlError(STRINGIFY(__LINE__))
static GLchar* getErrorString(GLenum errorCode)
{
if (errorCode == GL_NO_ERROR) {
return (GLchar*) "No error";
}
else if (errorCode == GL_INVALID_VALUE) {
return (GLchar*) "Invalid value";
}
else if (errorCode == GL_INVALID_ENUM) {
return (GLchar*) "Invalid enum";
}
else if (errorCode == GL_INVALID_OPERATION) {
return (GLchar*) "Invalid operation";
}
else if (errorCode == GL_STACK_OVERFLOW) {
return (GLchar*) "Stack overflow";
}
else if (errorCode == GL_STACK_UNDERFLOW) {
return (GLchar*) "Stack underflow";
}
else if (errorCode == GL_OUT_OF_MEMORY) {
return (GLchar*) "Out of memory";
}
return (GLchar*) "Unknown";
}
static void assertGlError(const char* error_message)
{
const GLenum ErrorValue = glGetError();
if (ErrorValue == GL_NO_ERROR) return;
const char* APPEND_DETAIL_STRING = ": %s\n";
const size_t APPEND_LENGTH = strlen(APPEND_DETAIL_STRING) + 1;
const size_t message_length = strlen(error_message);
MessageBox(NULL, error_message, getErrorString(ErrorValue), 0x00000000L);
ExitProcess(0);
}