dragonblocks_alpha/src/client/opengl.c

37 lines
1.5 KiB
C

#include <stdio.h>
#include "client/client_config.h"
#include "client/opengl.h"
// put this into seperate function to make it easy to trace stack using external debugger
static void opengl_error(GLenum err, const char *file, int line)
{
switch (err) {
case GL_INVALID_ENUM: fprintf(stderr, "[warning] OpenGL error: INVALID_ENUM %s:%d\n", file, line); break;
case GL_INVALID_VALUE: fprintf(stderr, "[warning] OpenGL error: INVALID_VALUE %s:%d\n", file, line); break;
case GL_INVALID_OPERATION: fprintf(stderr, "[warning] OpenGL error: INVALID_OPERATION %s:%d\n", file, line); break;
case GL_STACK_OVERFLOW: fprintf(stderr, "[warning] OpenGL error: STACK_OVERFLOW %s:%d\n", file, line); break;
case GL_STACK_UNDERFLOW: fprintf(stderr, "[warning] OpenGL error: STACK_UNDERFLOW %s:%d\n", file, line); break;
case GL_OUT_OF_MEMORY: fprintf(stderr, "[warning] OpenGL error: OUT_OF_MEMORY %s:%d\n", file, line); break;
case GL_INVALID_FRAMEBUFFER_OPERATION: fprintf(stderr, "[warning] OpenGL error: INVALID_FRAMEBUFFER_OPERATION %s:%d\n", file, line); break;
default: break;
}
}
void opengl_debug(const char *file, int line)
{
GLenum err = glGetError();
if (err != GL_NO_ERROR)
opengl_error(err, file, line);
}
GLint opengl_texture_batch_units()
{
if (!client_config.texture_batching)
return 1;
GLint units;
glGetIntegerv(GL_MAX_TEXTURE_UNITS, &units); GL_DEBUG
return units;
}