A 3d fps game made in OpenGL
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Symmetry/src/game/gl_load.c

75 lines
1.9 KiB

#include "gl_load.h"
#include "../common/log.h"
#include "../system/platform.h"
#include <SDL_assert.h>
#ifndef USE_GLAD
#define GLE(ret, name, ...) name##proc * gl##name;
SYMMETRY_GL_LIST
#undef GLE
#endif
int gl_load_library(void)
{
int success = 1;
// if(SDL_GL_LoadLibrary(NULL) < 0)
// {
// success = 0;
// log_error("gl_load_library", "Failed to load GL library %s", SDL_GetError());
// }
// else
// {
// log_message("Loaded GL library");
// }
return success;
}
bool gl_load_extentions(void)
{
bool success = true;
#ifdef USE_GLAD
if(!gladLoadGLLoader(platform_load_function_gl))
success = false;
#else
#define GLE(ret, name, ...) \
gl##name = (name##proc *) SDL_GL_GetProcAddress("gl" #name); \
if (!gl##name) { \
log_error("gl_load_extentions:SDL_GL_GetProcAddress", "Function gl" #name " failed to load"); \
success = 0; \
return success; \
}
SYMMETRY_GL_LIST
#undef GLE
#endif
return success;
}
void gl_check_error(const char * expression, unsigned int line, const char * file)
{
int error = 1;
GLenum error_code = glGetError();
const char* error_string = "No Error";
switch(error_code)
{
case GL_INVALID_OPERATION: error_string = "Invalid Operation"; break;
case GL_NO_ERROR: error_string = "No Error"; break;
case GL_INVALID_ENUM: error_string = "Invalid ENUM"; break;
case GL_INVALID_VALUE: error_string = "Invalid Value"; break;
case GL_INVALID_FRAMEBUFFER_OPERATION: error_string = "Invalid FrameBuffer Operation"; break;
case GL_OUT_OF_MEMORY: error_string = "Out of Memory"; break;
}
if(error_code != GL_NO_ERROR)
{
log_error("GL", "(%s:%d:%s) : %s", file, line, expression, error_string);
#ifdef GL_BREAK_ON_ERROR
SDL_TriggerBreakpoint();
#endif
}
else
error = 0;
}