Compressed texture

Hi,

This is the first time I am trying to use compressed textures (either GL_COMPRESSED_RGB_S3TC_DXT1_EXT for RGB or GL_COMPRESSED_RGBA_S3TC_DXT5_EXT for RGBA images). I pre-compress the images and save them to disk then I load them when I need them in compressed form.

Somehow I end up with a texture with only blue colours in it.

This is the way I compress my textures:


	glGenTextures(1, &tex);
	glBindTexture(GL_TEXTURE_2D, tex);
	
	if (Texbpp<32)
		glTexImage2D(GL_TEXTURE_2D,0,GL_COMPRESSED_RGB_S3TC_DXT1_EXT,Texwidth,Texheight,
		0,GL_RGB,GL_UNSIGNED_BYTE,(GLvoid*)Texbytes); 
	else
				glTexImage2D(GL_TEXTURE_2D,0,GL_COMPRESSED_RGBA_S3TC_DXT5_EXT,Texwidth,Texheight,
		0,GL_RGBA,GL_UNSIGNED_BYTE,(GLvoid*)Texbytes); 

	GLint compressed, internalformat,compressed_size;
	glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED_ARB, &compressed);
	if (compressed == GL_TRUE)
	{
		glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &internalformat);
		glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB,&compressed_size);
		glGetCompressedTexImageARB(GL_TEXTURE_2D, 0, TexbytesCompressed);
		TexlengthCompressed=(int)compressed_size;
		//SaveTexture(width, height, compressed_size, img, internalFormat, 0);
	}
	glBindTexture(GL_TEXTURE_2D, 0);
	glDeleteTextures(1, &tex);



And this is how I upload a compressed texture:




	glBindTexture(GL_TEXTURE_2D, Tex);

	if (BPP==24)
		format=GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
	else
		format=GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
	
	glCompressedTexImage2D(GL_TEXTURE_2D,0,format, Xres,Yres,0,compressed_size,Data);
		
		
	glBindTexture(GL_TEXTURE_2D, 0);

Do you see anything in these snippets that would explain why the R and G channels disappear from every pixel and only the B remains?

Thanks.