attempt to prevent too-small textures from being compressed

This commit is contained in:
David Rose 2007-07-02 20:11:14 +00:00
parent 278e10d8ff
commit 9752545e0b
1 changed files with 8 additions and 4 deletions

View File

@ -147,8 +147,10 @@ create_texture(DXScreenData &scrn) {
// check for texture compression
Texture::CompressionMode compression_mode = Texture::CompressionMode::CM_off;
bool texture_stored_compressed = false;
bool texture_wants_compressed = false;
if (get_texture()->get_compression() != Texture::CompressionMode::CM_off) {
texture_wants_compressed = true;
compression_mode = get_texture()->get_ram_image_compression();
// assert my assumption that CM_dxt1..CM_dxt5 enum values are ascending without gaps
nassertr(((Texture::CompressionMode::CM_dxt1+1)==Texture::CompressionMode::CM_dxt2)&&((Texture::CompressionMode::CM_dxt2+1)==Texture::CompressionMode::CM_dxt3)&&((Texture::CompressionMode::CM_dxt3+1)==Texture::CompressionMode::CM_dxt4)&&((Texture::CompressionMode::CM_dxt4+1)==Texture::CompressionMode::CM_dxt5),false);
@ -160,12 +162,14 @@ create_texture(DXScreenData &scrn) {
case Texture::TT_1d_texture:
case Texture::TT_2d_texture:
case Texture::TT_cube_map:
// no compression for render target textures
if (get_texture()->get_render_to_texture() == false) {
// check config setting and stored format
if (compressed_textures || texture_stored_compressed){
// no compression for render target textures, or very small
// textures
if (!get_texture()->get_render_to_texture() &&
orig_width >= 4 && orig_height >= 4) {
if (texture_wants_compressed){
compress_texture = true;
}
}
}
break;
case Texture::TT_3d_texture: