X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=main.c;h=dc9ca52778d2f62745ae47f4c43e3b028ad698ee;hb=a76e52b12bf54efdeb95b7f6d8ecfdcec0ab81ae;hp=497dc40e54d5c9243f5880880e1176619169fc63;hpb=c84f99be75b1a9cad2e4eea774c6705d27a7e4f5;p=test_compression diff --git a/main.c b/main.c index 497dc40..dc9ca52 100644 --- a/main.c +++ b/main.c @@ -20,14 +20,15 @@ int texcomp(unsigned char *compix, unsigned int tofmt, unsigned char *pixels, void disp(void); void reshape(int x, int y); void keyb(unsigned char key, int x, int y); +void idle(); void gen_image(unsigned char *pixels, int xsz, int ysz); unsigned char *load_compressed_image(const char *fname, int *cszptr, int *xszptr, int *yszptr); int dump_compressed_image(const char *fname, unsigned char *data, int size, int w, int h); void print_compressed_formats(void); -unsigned int tex, comp_tex; +unsigned int tex, tex2, comp_tex; const char *texfile; -int subtest; +int subtest, copytest, loop; int main(int argc, char **argv) { @@ -41,6 +42,11 @@ int main(int argc, char **argv) if(argv[i][0] == '-') { if(strcmp(argv[i], "-subtest") == 0) { subtest = 1; + } else if(strcmp(argv[i], "-copytest") == 0) { + copytest = 1; + } else if(strcmp(argv[i], "-copytest-loop") == 0) { + copytest = 1; + loop = 1; } else { fprintf(stderr, "invalid option: %s\n", argv[i]); return 1; @@ -50,7 +56,7 @@ int main(int argc, char **argv) fprintf(stderr, "unexpected argument: %s\n", argv[i]); return 1; } - texfile = argv[1]; + texfile = argv[i]; } } @@ -63,6 +69,9 @@ int main(int argc, char **argv) glutReshapeFunc(reshape); glutKeyboardFunc(keyb); + if (loop) + glutIdleFunc(idle); + glewInit(); if(init() == -1) { @@ -139,11 +148,28 @@ int init(void) } if(subtest) { + printf("testing glGetCompressedTextureSubImage and glCompressedTexSubImage2D\n"); memset(buf, 0, comp_size); glGetCompressedTextureSubImage(tex, 0, 192, 64, 0, 64, 64, 1, comp_size, buf); glCompressedTexSubImage2D(GL_TEXTURE_2D, 0, 32, 32, 64, 64, COMP_FMT, 2048, buf); } + if(copytest) { + printf("testing glCopyImageSubData\n"); + + glGenTextures(1, &tex2); + glBindTexture(GL_TEXTURE_2D, tex2); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glCompressedTexImage2D(GL_TEXTURE_2D, 0, COMP_FMT, xsz, ysz, 0, comp_size, pixels); + glBindTexture(GL_TEXTURE_2D, 0); + + glCopyImageSubData(tex2, GL_TEXTURE_2D, 0, 128, 64, 0, + tex, GL_TEXTURE_2D, 0, 32, 32, 0, 64, 64, 1); + + glBindTexture(GL_TEXTURE_2D, tex); + } + free(buf); free(pixels); @@ -213,6 +239,11 @@ void keyb(unsigned char key, int x, int y) } } +void idle() +{ + glutPostRedisplay(); +} + void gen_image(unsigned char *pixels, int xsz, int ysz) { int i, j; @@ -380,11 +411,10 @@ void print_compressed_formats(void) glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, fmtlist); for(i=0; i