#include "utils/logger.h" #include "render/gl_shared.h" #include "render/render_shared.h" const char *GL_ErrorString( int err ) { switch( err ) { case GL_STACK_OVERFLOW: return "GL_STACK_OVERFLOW"; case GL_STACK_UNDERFLOW: return "GL_STACK_UNDERFLOW"; case GL_INVALID_ENUM: return "GL_INVALID_ENUM"; case GL_INVALID_VALUE: return "GL_INVALID_VALUE"; case GL_INVALID_OPERATION: return "GL_INVALID_OPERATION"; case GL_OUT_OF_MEMORY: return "GL_OUT_OF_MEMORY"; default: return "UNKNOWN ERROR"; } } void GL_CheckError() { GLenum err; if ( (err = glGetError()) != GL_NO_ERROR ) Msg( "OpenGL Error: %s", GL_ErrorString( err ) );// Msg("OpenGL Error: %s [%s]\n", GL_ErrorString(err), GL_TargetToString(tex->target)); } void GL_CheckErrorEx( const char* filename, int line ) { GLenum err; if ( (err = glGetError()) != GL_NO_ERROR ) Msg( "OpenGL Error: %s at %s:%i", GL_ErrorString( err ), filename, line );// Msg("OpenGL Error: %s [%s]\n", GL_ErrorString(err), GL_TargetToString(tex->target)); } void GL_CheckErrorFunction(const char* expression, const char* filename, int line) { GLenum err; if ( (err = glGetError()) != GL_NO_ERROR ) Msg( "OpenGL Error: %s (%s) at %s:%i", expression, GL_ErrorString( err ), filename, line );// Msg("OpenGL Error: %s [%s]\n", GL_ErrorString(err), GL_TargetToString(tex->target)); } void GL_SetTexture( int slot, uint texture ) { } uint GetGLBlendFactor(BlendFactor factor) { switch (factor) { case BF_ZERO: return GL_ZERO; case BF_ONE: return GL_ONE; case BF_SRC_COLOR: return GL_SRC_COLOR; case BF_ONE_MINUS_SRC_COLOR: return GL_ONE_MINUS_SRC_COLOR; case BF_DST_COLOR: return GL_DST_COLOR; case BF_ONE_MINUS_DST_COLOR: return GL_ONE_MINUS_DST_COLOR; case BF_SRC_ALPHA: return GL_SRC_ALPHA; case BF_ONE_MINUS_SRC_ALPHA: return GL_ONE_MINUS_SRC_ALPHA; case BF_DST_ALPHA: return GL_DST_ALPHA; case BF_ONE_MINUS_DST_ALPHA: return GL_ONE_MINUS_DST_ALPHA; case BF_CONSTANT_COLOR: return GL_CONSTANT_COLOR; case BF_ONE_MINUS_CONSTANT_COLOR: return GL_ONE_MINUS_CONSTANT_COLOR; case BF_CONSTANT_ALPHA: return GL_CONSTANT_ALPHA; case BF_ONE_MINUS_CONSTANT_ALPHA: return GL_ONE_MINUS_CONSTANT_ALPHA; default: break; } return 0; } #define LOAD_GL_FUNC(functype, funcname) \ { \ funcname = (functype)wglGetProcAddress(#funcname); \ if (funcname == NULL) \ LogMsg("Failed to load %s", #funcname); \ } void GL_Load() { // OpenGL 1.5 LOAD_GL_FUNC(PFNGLGENQUERIESPROC, glGenQueries); LOAD_GL_FUNC(PFNGLDELETEQUERIESPROC, glDeleteQueries); LOAD_GL_FUNC(PFNGLISQUERYPROC, glIsQuery); LOAD_GL_FUNC(PFNGLBEGINQUERYPROC, glBeginQuery); LOAD_GL_FUNC(PFNGLENDQUERYPROC, glEndQuery); LOAD_GL_FUNC(PFNGLGETQUERYIVPROC, glGetQueryiv); LOAD_GL_FUNC(PFNGLGETQUERYOBJECTIVPROC, glGetQueryObjectiv); LOAD_GL_FUNC(PFNGLGETQUERYOBJECTUIVPROC, glGetQueryObjectuiv); LOAD_GL_FUNC(PFNGLBINDBUFFERPROC, glBindBuffer); LOAD_GL_FUNC(PFNGLDELETEBUFFERSPROC, glDeleteBuffers); LOAD_GL_FUNC(PFNGLGENBUFFERSPROC, glGenBuffers); LOAD_GL_FUNC(PFNGLISBUFFERPROC, glIsBuffer); LOAD_GL_FUNC(PFNGLBUFFERDATAPROC, glBufferData); LOAD_GL_FUNC(PFNGLBUFFERSUBDATAPROC, glBufferSubData); LOAD_GL_FUNC(PFNGLGETBUFFERSUBDATAPROC, glGetBufferSubData); LOAD_GL_FUNC(PFNGLMAPBUFFERPROC, glMapBuffer); LOAD_GL_FUNC(PFNGLUNMAPBUFFERPROC, glUnmapBuffer); LOAD_GL_FUNC(PFNGLGETBUFFERPARAMETERIVPROC, glGetBufferParameteriv); LOAD_GL_FUNC(PFNGLGETBUFFERPOINTERVPROC, glGetBufferPointerv); } PFNGLGENQUERIESPROC glGenQueries = NULL; PFNGLDELETEQUERIESPROC glDeleteQueries = NULL; PFNGLISQUERYPROC glIsQuery = NULL; PFNGLBEGINQUERYPROC glBeginQuery = NULL; PFNGLENDQUERYPROC glEndQuery = NULL; PFNGLGETQUERYIVPROC glGetQueryiv = NULL; PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv = NULL; PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv = NULL; PFNGLBINDBUFFERPROC glBindBuffer = NULL; PFNGLDELETEBUFFERSPROC glDeleteBuffers = NULL; PFNGLGENBUFFERSPROC glGenBuffers = NULL; PFNGLISBUFFERPROC glIsBuffer = NULL; PFNGLBUFFERDATAPROC glBufferData = NULL; PFNGLBUFFERSUBDATAPROC glBufferSubData = NULL; PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData = NULL; PFNGLMAPBUFFERPROC glMapBuffer = NULL; PFNGLUNMAPBUFFERPROC glUnmapBuffer = NULL; PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv = NULL; PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv = NULL;