X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fopengl.c;h=a7962c7bfe25dfc13ccb47fc63f89297e921c8b3;hp=9fe7ea3f7a817c04a9aba0dd2c1b77328af3c375;hb=844f36f03073c5db86a8acd2cf7cd1a89e1a16b9;hpb=215f16e2f26cc2acc79255bab06f13452ec06ae5 diff --git a/src/opengl.c b/src/opengl.c index 9fe7ea3..a7962c7 100644 --- a/src/opengl.c +++ b/src/opengl.c @@ -1,8 +1,11 @@ +#include #include "opengl.h" #include "logger.h" -static void gldebug_logger(unsigned int src, unsigned int type, unsigned int id, - unsigned int severity, int len, const char *msg, const void *cls); + +static void GLAPIENTRY gldebug_logger(GLenum src, GLenum type, GLuint id, GLenum severity, + GLsizei len, const char *msg, const void *cls); + static const char *gldebug_srcstr(unsigned int src); static const char *gldebug_typestr(unsigned int type); static const char *gldebug_sevstr(unsigned int sev); @@ -25,9 +28,36 @@ int init_opengl(void) return 0; } +void dump_gl_texture(unsigned int tex, const char *fname) +{ + FILE *fp; + int i, width, height; + unsigned char *pixels; + + glBindTexture(GL_TEXTURE_2D, tex); + glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width); + glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height); + + if(!(pixels = malloc(width * height * 3))) { + return; + } + glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_UNSIGNED_BYTE, pixels); + + if(!(fp = fopen(fname, "wb"))) { + free(pixels); + return; + } + fprintf(fp, "P6\n%d %d\n255\n", width, height); + for(i=0; i