From 03daf3cf2183d0c1aabe1b10645dba9c8597d53e Mon Sep 17 00:00:00 2001 From: Eleni Maria Stea Date: Sun, 21 Oct 2018 14:43:46 +0300 Subject: [PATCH] Added mipmaps. Buggy! This code has a bug because when I load the mipmap on nvidia, it looks correct, but I see the message "loaded and compressed data differ". Pushing for backup --- compressed/full.tex | Bin 0 -> 174968 bytes compressed/main.c | 432 ++++++++++++++++++++++++++++++++++++++++++++++++++ compressed/nomip.tex | Bin 0 -> 32960 bytes main.c | 309 ++++++++++++++++++++---------------- 4 files changed, 600 insertions(+), 141 deletions(-) create mode 100644 compressed/full.tex create mode 100644 compressed/main.c create mode 100644 compressed/nomip.tex diff --git a/compressed/full.tex b/compressed/full.tex new file mode 100644 index 0000000000000000000000000000000000000000..1aa75811399accf5e600ff40cc6bf1edc975649a GIT binary patch literal 174968 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 literal 0 HcmV?d00001 diff --git a/compressed/main.c b/compressed/main.c new file mode 100644 index 0000000..1993b32 --- /dev/null +++ b/compressed/main.c @@ -0,0 +1,432 @@ +#include +#include +#include +#include +#include +#include +#include + +struct texture { + unsigned int id; + int width, height; + unsigned int fmt; + unsigned int compsize; + void *data; +}; + +int init(void); +void disp(void); +void reshape(int x, int y); +void keyb(unsigned char key, int x, int y); +void idle(void); +int load_texture(const char *fname, struct texture *tex); +const char *fmtstr(int fmt); +void print_compressed_formats(void); + +struct texture tex; +unsigned int tex2; +const char *texfile; +int subtest, copytest; + +int main(int argc, char **argv) +{ + int i, loop = 0; + unsigned int glut_flags = GLUT_RGB | GLUT_DOUBLE; + + for(i=1; i 20 || !hdr.datadesc[0].size) { + fprintf(stderr, "%s is not a compressed texture file, or is corrupted\n", fname); + fclose(fp); + return -1; + } + + if(!(buf = malloc(hdr.datadesc[0].size))) { + fprintf(stderr, "failed to allocate compressed texture buffer (%d bytes): %s\n", + hdr.datadesc[0].size, strerror(errno)); + fclose(fp); + return -1; + } + if(!(tex->data = malloc(hdr.datadesc[0].size))) { + fprintf(stderr, "failed to allocate data buffer\n"); + fclose(fp); + free(buf); + return -1; + } + + + glGenTextures(1, &tex->id); + glBindTexture(GL_TEXTURE_2D, tex->id); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + hdr.levels > 1 ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, 1); + + tex->fmt = hdr.glfmt; + tex->width = hdr.width; + tex->height = hdr.height; + tex->compsize = hdr.datadesc[0].size; + + printf("%s: %dx%d format: %s\n", fname, tex->width, tex->height, fmtstr(tex->fmt)); + glutReshapeWindow(tex->width + tex->width / 2, tex->height); + + for(i=0; iid); + return -1; + } + if(i == 0) { + memcpy(tex->data, buf, hdr.datadesc[0].size); + } + glCompressedTexImage2D(GL_TEXTURE_2D, i, hdr.glfmt, hdr.width, hdr.height, 0, + hdr.datadesc[i].size, buf); + + hdr.width /= 2; + hdr.height /= 2; + } + + free(buf); + fclose(fp); + return 0; +} + +const char *fmtstr(int fmt) +{ + switch(fmt) { + case 0x86b0: return "GL_COMPRESSED_RGB_FXT1_3DFX"; + case 0x86b1: return "GL_COMPRESSED_RGBA_FXT1_3DFX"; + case 0x8dbb: return "GL_COMPRESSED_RED_RGTC1"; + case 0x8dbc: return "GL_COMPRESSED_SIGNED_RED_RGTC1"; + case 0x8dbd: return "GL_COMPRESSED_RG_RGTC2"; + case 0x8dbe: return "GL_COMPRESSED_SIGNED_RG_RGTC2"; + case 0x8e8c: return "GL_COMPRESSED_RGBA_BPTC_UNORM"; + case 0x8e8d: return "GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"; + case 0x8e8e: return "GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"; + case 0x8e8f: return "GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"; + case 0x9274: return "GL_COMPRESSED_RGB8_ETC2"; + case 0x9275: return "GL_COMPRESSED_SRGB8_ETC2"; + case 0x9276: return "GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2"; + case 0x9277: return "GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2"; + case 0x9278: return "GL_COMPRESSED_RGBA8_ETC2_EAC"; + case 0x9279: return "GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"; + case 0x9270: return "GL_COMPRESSED_R11_EAC"; + case 0x9271: return "GL_COMPRESSED_SIGNED_R11_EAC"; + case 0x9272: return "GL_COMPRESSED_RG11_EAC"; + case 0x9273: return "GL_COMPRESSED_SIGNED_RG11_EAC"; + case 0x83F0: return "GL_COMPRESSED_RGB_S3TC_DXT1_EXT"; + case 0x83F1: return "GL_COMPRESSED_RGBA_S3TC_DXT1_EXT"; + case 0x83F2: return "GL_COMPRESSED_RGBA_S3TC_DXT3_EXT"; + case 0x83F3: return "GL_COMPRESSED_RGBA_S3TC_DXT5_EXT"; + case 0x8C48: return "GL_COMPRESSED_SRGB_EXT"; + case 0x8C49: return "GL_COMPRESSED_SRGB_ALPHA_EXT"; + case 0x8C4A: return "GL_COMPRESSED_SLUMINANCE_EXT"; + case 0x8C4B: return "GL_COMPRESSED_SLUMINANCE_ALPHA_EXT"; + case 0x8C4C: return "GL_COMPRESSED_SRGB_S3TC_DXT1_EXT"; + case 0x8C4D: return "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT"; + case 0x8C4E: return "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT"; + case 0x8C4F: return "GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT"; + case 0x8B90: return "GL_PALETTE4_RGB8_OES"; + case 0x8B91: return "GL_PALETTE4_RGBA8_OES"; + case 0x8B92: return "GL_PALETTE4_R5_G6_B5_OES"; + case 0x8B93: return "GL_PALETTE4_RGBA4_OES"; + case 0x8B94: return "GL_PALETTE4_RGB5_A1_OES"; + case 0x8B95: return "GL_PALETTE8_RGB8_OES"; + case 0x8B96: return "GL_PALETTE8_RGBA8_OES"; + case 0x8B97: return "GL_PALETTE8_R5_G6_B5_OES"; + case 0x8B98: return "GL_PALETTE8_RGBA4_OES"; + case 0x8B99: return "GL_PALETTE8_RGB5_A1_OES"; + case 0x93B0: return "GL_COMPRESSED_RGBA_ASTC_4"; + case 0x93B1: return "GL_COMPRESSED_RGBA_ASTC_5"; + case 0x93B2: return "GL_COMPRESSED_RGBA_ASTC_5"; + case 0x93B3: return "GL_COMPRESSED_RGBA_ASTC_6"; + case 0x93B4: return "GL_COMPRESSED_RGBA_ASTC_6"; + case 0x93B5: return "GL_COMPRESSED_RGBA_ASTC_8"; + case 0x93B6: return "GL_COMPRESSED_RGBA_ASTC_8"; + case 0x93B7: return "GL_COMPRESSED_RGBA_ASTC_8"; + case 0x93B8: return "GL_COMPRESSED_RGBA_ASTC_10"; + case 0x93B9: return "GL_COMPRESSED_RGBA_ASTC_10"; + case 0x93BA: return "GL_COMPRESSED_RGBA_ASTC_10"; + case 0x93BB: return "GL_COMPRESSED_RGBA_ASTC_10"; + case 0x93BC: return "GL_COMPRESSED_RGBA_ASTC_12"; + case 0x93BD: return "GL_COMPRESSED_RGBA_ASTC_12"; + case 0x93D0: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4"; + case 0x93D1: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5"; + case 0x93D2: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5"; + case 0x93D3: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6"; + case 0x93D4: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6"; + case 0x93D5: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8"; + case 0x93D6: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8"; + case 0x93D7: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8"; + case 0x93D8: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10"; + case 0x93D9: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10"; + case 0x93DA: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10"; + case 0x93DB: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10"; + case 0x93DC: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12"; + case 0x93DD: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12"; + case GL_LUMINANCE: + case 1: + return "GL_LUMINANCE"; + case GL_RGB: + case 3: + return "GL_RGB"; + case GL_RGBA: + case 4: + return "GL_RGBA"; + case GL_BGR: return "GL_BGR"; + case GL_BGRA: return "GL_BGRA"; + case GL_SLUMINANCE: return "GL_SLUMINANCE"; + case GL_SLUMINANCE8: return "GL_SLUMINANCE8"; + case GL_SLUMINANCE_ALPHA: return "GL_SLUMINANCE_ALPHA"; + case GL_SLUMINANCE8_ALPHA8: return "GL_SLUMINANCE8_ALPHA8"; + case GL_SRGB: return "GL_SRGB"; + case GL_SRGB8: return "GL_SRGB8"; + case GL_SRGB_ALPHA: return "GL_SRGB_ALPHA"; + case GL_SRGB8_ALPHA8: return "GL_SRGB8_ALPHA8"; + default: + break; + } + return "unknown"; +} + +void print_compressed_formats(void) +{ + int i, num_fmt; + int *fmtlist; + + glGetIntegerv(GL_NUM_COMPRESSED_TEXTURE_FORMATS, &num_fmt); + printf("%d generic compressed texture formats available:\n", num_fmt); + + if(!(fmtlist = malloc(num_fmt * sizeof *fmtlist))) { + fprintf(stderr, "failed to allocate texture formats enumeration buffer\n"); + return; + } + glGetIntegerv(GL_COMPRESSED_TEXTURE_FORMATS, fmtlist); + + for(i=0; iYJh=_#(bc7E`rpss?ufL3RZN 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%0Dl3!Ix6cfeaF-jgNtZs zdg>==!8J$zs3U-H#J6_AE5g6WdDxmi{6(! z1by%_=UDRA%1$L#V~=gDF*=xe@N-*sm!|odkcaN7}a?e5jnE0xp@%-1{A?M5+Z%w1#g8g3Y_HV{a z97Bp`m7S7(!9?h~N@q^aNFy(tXf7(;fPJUVH?lkP2K1y)Fw#KY#Uc1aXR;>G@A>iP zaqxj3b)E~?ZZXG5zrEn4tiR|fb584$=np`zFi+X;!@Q&1bSrv>xu=_ZdYpWZAK;}S zuY2sLpAwHG?~1ujyhvQ&ue+u4J+|mR_8WB*Z|<9CA0+?p{I7?i`=TxQgHc=ecDb-i zf(wA(ACMrpLgB&nVh6AXsxRI03h{s&|G=Mq^|&Jo=r?B_ZL1Vtu)mr|-dOm9bA>aq zatJ-Z`huSYy(N#J^Z@!o=nOyI<{Y`r8jaw82^5G74eSH9ega4#P_WU zTt}Sok<_P29d82oXZRznTk~#9eDF~^_dD(VrOHz&K7AJ7yYrT^uZ13gFTm9h|AzmE zo{;yiYp*#LJ$8Zo->MLo;QtY)1)A@T&c*)M#$W51vo6l~Ll5!YrE-sp@6Pu=^;WqD z^6IUjFN^y6FErqsR92Tj$NcGMc20bIgMA}V-AC&LwnM@v^{r}8r@Xj3 #include -#undef USE_SRGB - -#ifdef USE_SRGB -#define COMP_FMT GL_COMPRESSED_SRGB8_ETC2 -#else -#define COMP_FMT GL_COMPRESSED_RGB8_ETC2 -#endif +struct texture { + unsigned int id; + int width, height; + unsigned int fmt; + unsigned int compsize; + void *data; +}; int init(void); -int texcomp(unsigned char *compix, unsigned int tofmt, unsigned char *pixels, - int xsz, int ysz, unsigned int fromfmt, unsigned int fromtype); 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 idle(void); +int load_texture(const char *fname, struct texture *tex); +const char *fmtstr(int fmt); void print_compressed_formats(void); -unsigned int tex, tex2, comp_tex; +struct texture tex; +unsigned int tex2; const char *texfile; -int subtest, copytest, loop; +int subtest, copytest; int main(int argc, char **argv) { - int i; + int i, loop = 0; unsigned int glut_flags = GLUT_RGB | GLUT_DOUBLE; -#ifdef USE_SRGB - glut_flags |= GLUT_SRGB; -#endif for(i=1; i 20 || !hdr.datadesc[0].size) { + fprintf(stderr, "%s is not a compressed texture file, or is corrupted\n", fname); + fclose(fp); + return -1; } - if(fread(pixels, 1, comp_size, fp) < comp_size) { - fprintf(stderr, "failed to read compressed texture file: %s: %s\n", texfile, strerror(errno)); + + if(!(buf = malloc(hdr.datadesc[0].size))) { + fprintf(stderr, "failed to allocate compressed texture buffer (%d bytes): %s\n", + hdr.datadesc[0].size, strerror(errno)); fclose(fp); - free(pixels); - return 0; + return -1; + } + if(!(tex->data = malloc(hdr.datadesc[0].size))) { + fprintf(stderr, "failed to allocate data buffer\n"); + fclose(fp); + free(buf); + return -1; } - fclose(fp); - *cszptr = comp_size; - *xszptr = xsz; - *yszptr = ysz; - return pixels; -} -int dump_compressed_image(const char *fname, unsigned char *data, int size, int w, int h) -{ - FILE *fp; + glGenTextures(1, &tex->id); + glBindTexture(GL_TEXTURE_2D, tex->id); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, + hdr.levels > 1 ? GL_NEAREST_MIPMAP_NEAREST : GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, 1); - if(!(fp = fopen(fname, "wb"))) { - fprintf(stderr, "failed to open compressed texture dump file: %s: %s\n", fname, strerror(errno)); - return -1; - } + tex->fmt = hdr.glfmt; + tex->width = hdr.width; + tex->height = hdr.height; + tex->compsize = hdr.datadesc[0].size; + + printf("%s: %dx%d format: %s\n", fname, tex->width, tex->height, fmtstr(tex->fmt)); + glutReshapeWindow(tex->width + tex->width / 2, tex->height); - if(fwrite(&w, sizeof w, 1, fp) < 1 || - fwrite(&h, sizeof h, 1, fp) < 1 || - fwrite(data, 1, size, fp) < size) { - fprintf(stderr, "failed to dump compressed texture: %s\n", strerror(errno)); + for(i=0; iid); + return -1; + } + if(i == 0) { + memcpy(tex->data, buf, hdr.datadesc[0].size); + } + glCompressedTexImage2D(GL_TEXTURE_2D, i, hdr.glfmt, hdr.width, hdr.height, 0, + hdr.datadesc[i].size, buf); + + hdr.width /= 2; + hdr.height /= 2; } + + free(buf); fclose(fp); return 0; } @@ -390,6 +398,25 @@ const char *fmtstr(int fmt) case 0x93DB: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10"; case 0x93DC: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12"; case 0x93DD: return "GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12"; + case GL_LUMINANCE: + case 1: + return "GL_LUMINANCE"; + case GL_RGB: + case 3: + return "GL_RGB"; + case GL_RGBA: + case 4: + return "GL_RGBA"; + case GL_BGR: return "GL_BGR"; + case GL_BGRA: return "GL_BGRA"; + case GL_SLUMINANCE: return "GL_SLUMINANCE"; + case GL_SLUMINANCE8: return "GL_SLUMINANCE8"; + case GL_SLUMINANCE_ALPHA: return "GL_SLUMINANCE_ALPHA"; + case GL_SLUMINANCE8_ALPHA8: return "GL_SLUMINANCE8_ALPHA8"; + case GL_SRGB: return "GL_SRGB"; + case GL_SRGB8: return "GL_SRGB8"; + case GL_SRGB_ALPHA: return "GL_SRGB_ALPHA"; + case GL_SRGB8_ALPHA8: return "GL_SRGB8_ALPHA8"; default: break; } -- 1.7.10.4