leviathan-2.0
This commit is contained in:
48
src/debug.h
Normal file
48
src/debug.h
Normal file
@ -0,0 +1,48 @@
|
||||
// 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);
|
||||
}
|
||||
Reference in New Issue
Block a user