Просмотр исходного кода

attempt to prevent too-small textures from being compressed

David Rose 18 лет назад
Родитель
Сommit
9752545e0b
1 измененных файлов с 8 добавлено и 4 удалено
  1. 8 4
      panda/src/dxgsg9/dxTextureContext9.cxx

+ 8 - 4
panda/src/dxgsg9/dxTextureContext9.cxx

@@ -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: