]> git.lizzy.rs Git - dragonblocks_alpha.git/blob - src/client/gl_debug.c
Fix client terrain crashes and performance
[dragonblocks_alpha.git] / src / client / gl_debug.c
1 #include <GL/glew.h>
2 #include <GL/gl.h>
3 #include <stdio.h>
4 #include "client/gl_debug.h"
5
6 // put this into seperate function to make it easy to trace stack using external debugger
7 static void gl_error(GLenum err, const char *file, int line)
8 {
9         switch (err) {
10                 case GL_INVALID_ENUM:                  fprintf(stderr, "[warning] OpenGL error: INVALID_ENUM %s:%d\n", file, line); break;
11                 case GL_INVALID_VALUE:                 fprintf(stderr, "[warning] OpenGL error: INVALID_VALUE %s:%d\n", file, line); break;
12                 case GL_INVALID_OPERATION:             fprintf(stderr, "[warning] OpenGL error: INVALID_OPERATION %s:%d\n", file, line); break;
13                 case GL_STACK_OVERFLOW:                fprintf(stderr, "[warning] OpenGL error: STACK_OVERFLOW %s:%d\n", file, line); break;
14                 case GL_STACK_UNDERFLOW:               fprintf(stderr, "[warning] OpenGL error: STACK_UNDERFLOW %s:%d\n", file, line); break;
15                 case GL_OUT_OF_MEMORY:                 fprintf(stderr, "[warning] OpenGL error: OUT_OF_MEMORY %s:%d\n", file, line); break;
16                 case GL_INVALID_FRAMEBUFFER_OPERATION: fprintf(stderr, "[warning] OpenGL error: INVALID_FRAMEBUFFER_OPERATION %s:%d\n", file, line); break;
17                 default: break;
18         }
19 }
20 void gl_debug(const char *file, int line)
21 {
22         GLenum err = glGetError();
23
24         if (err != GL_NO_ERROR)
25                 gl_error(err, file, line);
26 }