void decompressDXTC(GLint format, int w, int h, size_t size, unsigned char *src, unsigned char *dest) { // sort of copied from linghuye int bsx = (w<4) ? w : 4; int bsy = (h<4) ? h : 4; for(int y=0; y> 11) & 0x1f) << 3; color[0].g = (unsigned char) ((c0 >> 5) & 0x3f) << 2; color[0].r = (unsigned char) ((c0 ) & 0x1f) << 3; color[1].b = (unsigned char) ((c1 >> 11) & 0x1f) << 3; color[1].g = (unsigned char) ((c1 >> 5) & 0x3f) << 2; color[1].r = (unsigned char) ((c1 ) & 0x1f) << 3; if(c0 > c1) { color[2].r = (color[0].r * 2 + color[1].r) / 3; color[2].g = (color[0].g * 2 + color[1].g) / 3; color[2].b = (color[0].b * 2 + color[1].b) / 3; color[3].r = (color[0].r + color[1].r * 2) / 3; color[3].g = (color[0].g + color[1].g * 2) / 3; color[3].b = (color[0].b + color[1].b * 2) / 3; } else { color[2].r = (color[0].r + color[1].r) / 2; color[2].g = (color[0].g + color[1].g) / 2; color[2].b = (color[0].b + color[1].b) / 2; color[3].r = 0; color[3].g = 0; color[3].b = 0; } for (int j=0; j>= 4; } index >>= 2; } } } } }