Browse Source

glgsg: slight refactor of get_internal_image_format()

rdb 4 years ago
parent
commit
b060767bd8
1 changed files with 42 additions and 40 deletions
  1. 42 40
      panda/src/glstuff/glGraphicsStateGuardian_src.cxx

+ 42 - 40
panda/src/glstuff/glGraphicsStateGuardian_src.cxx

@@ -9648,8 +9648,10 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
     // no compression for render targets
     // no compression for render targets
     compression = Texture::CM_off;
     compression = Texture::CM_off;
   }
   }
-  bool is_3d = (tex->get_texture_type() == Texture::TT_3d_texture ||
-                tex->get_texture_type() == Texture::TT_2d_texture_array);
+  Texture::ComponentType component_type = tex->get_component_type();
+  Texture::TextureType texture_type = tex->get_texture_type();
+  bool is_3d = (texture_type == Texture::TT_3d_texture ||
+                texture_type == Texture::TT_2d_texture_array);
 
 
   if (get_supports_compressed_texture_format(compression)) {
   if (get_supports_compressed_texture_format(compression)) {
     switch (compression) {
     switch (compression) {
@@ -9789,7 +9791,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
         }
         }
 #endif
 #endif
         if (get_supports_compressed_texture_format(Texture::CM_eac) && !is_3d) {
         if (get_supports_compressed_texture_format(Texture::CM_eac) && !is_3d) {
-          if (Texture::is_unsigned(tex->get_component_type())) {
+          if (Texture::is_unsigned(component_type)) {
             return GL_COMPRESSED_R11_EAC;
             return GL_COMPRESSED_R11_EAC;
           } else {
           } else {
             return GL_COMPRESSED_SIGNED_R11_EAC;
             return GL_COMPRESSED_SIGNED_R11_EAC;
@@ -9815,7 +9817,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
         }
         }
 #endif
 #endif
         if (get_supports_compressed_texture_format(Texture::CM_eac) && !is_3d) {
         if (get_supports_compressed_texture_format(Texture::CM_eac) && !is_3d) {
-          if (Texture::is_unsigned(tex->get_component_type())) {
+          if (Texture::is_unsigned(component_type)) {
             return GL_COMPRESSED_RG11_EAC;
             return GL_COMPRESSED_RG11_EAC;
           } else {
           } else {
             return GL_COMPRESSED_SIGNED_RG11_EAC;
             return GL_COMPRESSED_SIGNED_RG11_EAC;
@@ -9993,7 +9995,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
       break;
       break;
 
 
     case Texture::CM_eac:
     case Texture::CM_eac:
-      if (Texture::is_unsigned(tex->get_component_type())) {
+      if (Texture::is_unsigned(component_type)) {
         if (tex->get_num_components() == 1) {
         if (tex->get_num_components() == 1) {
           return GL_COMPRESSED_R11_EAC;
           return GL_COMPRESSED_R11_EAC;
         } else {
         } else {
@@ -10026,7 +10028,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
   case Texture::F_depth_stencil:
   case Texture::F_depth_stencil:
     if (_supports_depth_stencil) {
     if (_supports_depth_stencil) {
 #ifndef OPENGLES
 #ifndef OPENGLES
-      if (tex->get_component_type() == Texture::T_float) {
+      if (component_type == Texture::T_float) {
         return GL_DEPTH32F_STENCIL8;
         return GL_DEPTH32F_STENCIL8;
       } else
       } else
 #endif
 #endif
@@ -10038,7 +10040,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
 
 
   case Texture::F_depth_component:
   case Texture::F_depth_component:
 #ifndef OPENGLES
 #ifndef OPENGLES
-    if (tex->get_component_type() == Texture::T_float) {
+    if (component_type == Texture::T_float) {
       return GL_DEPTH_COMPONENT32F;
       return GL_DEPTH_COMPONENT32F;
     } else
     } else
 #endif
 #endif
@@ -10073,7 +10075,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
       return GL_DEPTH_COMPONENT16_OES;
       return GL_DEPTH_COMPONENT16_OES;
     }
     }
 #else
 #else
-    if (tex->get_component_type() == Texture::T_float) {
+    if (component_type == Texture::T_float) {
       return GL_DEPTH_COMPONENT32F;
       return GL_DEPTH_COMPONENT32F;
     } else {
     } else {
       return GL_DEPTH_COMPONENT32;
       return GL_DEPTH_COMPONENT32;
@@ -10083,7 +10085,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
   case Texture::F_rgba:
   case Texture::F_rgba:
   case Texture::F_rgbm:
   case Texture::F_rgbm:
 #ifndef OPENGLES_1
 #ifndef OPENGLES_1
-    if (tex->get_component_type() == Texture::T_float) {
+    if (component_type == Texture::T_float) {
       return GL_RGBA16F;
       return GL_RGBA16F;
     } else
     } else
 #endif
 #endif
@@ -10093,11 +10095,11 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
       return _supports_bgr ? GL_BGRA : GL_RGBA;
       return _supports_bgr ? GL_BGRA : GL_RGBA;
     }
     }
 #else
 #else
-    if (tex->get_component_type() == Texture::T_unsigned_short) {
+    if (component_type == Texture::T_unsigned_short) {
       return GL_RGBA16;
       return GL_RGBA16;
-    } else if (tex->get_component_type() == Texture::T_short) {
+    } else if (component_type == Texture::T_short) {
       return GL_RGBA16_SNORM;
       return GL_RGBA16_SNORM;
-    } else if (tex->get_component_type() == Texture::T_byte) {
+    } else if (component_type == Texture::T_byte) {
       return GL_RGBA8_SNORM;
       return GL_RGBA8_SNORM;
     } else {
     } else {
       return force_sized ? GL_RGBA8 : GL_RGBA;
       return force_sized ? GL_RGBA8 : GL_RGBA;
@@ -10114,32 +10116,32 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
     return _supports_bgr ? GL_BGRA : (force_sized ? GL_RGBA8 : GL_RGBA);
     return _supports_bgr ? GL_BGRA : (force_sized ? GL_RGBA8 : GL_RGBA);
 #else
 #else
   case Texture::F_rgba8:
   case Texture::F_rgba8:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RGBA8;
       return GL_RGBA8;
     } else {
     } else {
       return GL_RGBA8_SNORM;
       return GL_RGBA8_SNORM;
     }
     }
 
 
   case Texture::F_r8i:
   case Texture::F_r8i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_R8UI;
       return GL_R8UI;
     } else {
     } else {
       return GL_R8I;
       return GL_R8I;
     }
     }
   case Texture::F_rg8i:
   case Texture::F_rg8i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RG8UI;
       return GL_RG8UI;
     } else {
     } else {
       return GL_RG8I;
       return GL_RG8I;
     }
     }
   case Texture::F_rgb8i:
   case Texture::F_rgb8i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RGB8UI;
       return GL_RGB8UI;
     } else {
     } else {
       return GL_RGB8I;
       return GL_RGB8I;
     }
     }
   case Texture::F_rgba8i:
   case Texture::F_rgba8i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RGBA8UI;
       return GL_RGBA8UI;
     } else {
     } else {
       return GL_RGBA8I;
       return GL_RGBA8I;
@@ -10149,9 +10151,9 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
 #endif  // OPENGLES
 #endif  // OPENGLES
 #ifndef OPENGLES
 #ifndef OPENGLES
   case Texture::F_rgba16:
   case Texture::F_rgba16:
-    if (tex->get_component_type() == Texture::T_float) {
+    if (component_type == Texture::T_float) {
       return GL_RGBA16F;
       return GL_RGBA16F;
-    } else if (Texture::is_unsigned(tex->get_component_type())) {
+    } else if (Texture::is_unsigned(component_type)) {
       return GL_RGBA16;
       return GL_RGBA16;
     } else {
     } else {
       return GL_RGBA16_SNORM;
       return GL_RGBA16_SNORM;
@@ -10161,7 +10163,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
 #endif  // OPENGLES
 #endif  // OPENGLES
 
 
   case Texture::F_rgb:
   case Texture::F_rgb:
-    switch (tex->get_component_type()) {
+    switch (component_type) {
     case Texture::T_float: return GL_RGB16F;
     case Texture::T_float: return GL_RGB16F;
 #ifndef OPENGLES
 #ifndef OPENGLES
     case Texture::T_unsigned_short: return GL_RGB16;
     case Texture::T_unsigned_short: return GL_RGB16;
@@ -10191,7 +10193,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
     return GL_RGB16F;
     return GL_RGB16F;
 #else
 #else
   case Texture::F_rgb8:
   case Texture::F_rgb8:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RGB8;
       return GL_RGB8;
     } else {
     } else {
       return GL_RGB8_SNORM;
       return GL_RGB8_SNORM;
@@ -10199,9 +10201,9 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
   case Texture::F_rgb12:
   case Texture::F_rgb12:
     return GL_RGB12;
     return GL_RGB12;
   case Texture::F_rgb16:
   case Texture::F_rgb16:
-    if (tex->get_component_type() == Texture::T_float) {
+    if (component_type == Texture::T_float) {
       return GL_RGB16F;
       return GL_RGB16F;
-    } else if (Texture::is_unsigned(tex->get_component_type())) {
+    } else if (Texture::is_unsigned(component_type)) {
       return GL_RGB16;
       return GL_RGB16;
     } else {
     } else {
       return GL_RGB16_SNORM;
       return GL_RGB16_SNORM;
@@ -10222,41 +10224,41 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
     return GL_RG16F_EXT;
     return GL_RG16F_EXT;
 #elif !defined(OPENGLES_1)
 #elif !defined(OPENGLES_1)
   case Texture::F_r16:
   case Texture::F_r16:
-    if (tex->get_component_type() == Texture::T_float) {
+    if (component_type == Texture::T_float) {
       return GL_R16F;
       return GL_R16F;
-    } else if (Texture::is_unsigned(tex->get_component_type())) {
+    } else if (Texture::is_unsigned(component_type)) {
       return GL_R16;
       return GL_R16;
     } else {
     } else {
       return GL_R16_SNORM;
       return GL_R16_SNORM;
     }
     }
   case Texture::F_rg16:
   case Texture::F_rg16:
-    if (tex->get_component_type() == Texture::T_float) {
+    if (component_type == Texture::T_float) {
       return GL_RG16F;
       return GL_RG16F;
-    } else if (Texture::is_unsigned(tex->get_component_type())) {
+    } else if (Texture::is_unsigned(component_type)) {
       return GL_RG16;
       return GL_RG16;
     } else {
     } else {
       return GL_RG16_SNORM;
       return GL_RG16_SNORM;
     }
     }
   case Texture::F_r16i:
   case Texture::F_r16i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_R16UI;
       return GL_R16UI;
     } else {
     } else {
       return GL_R16I;
       return GL_R16I;
     }
     }
   case Texture::F_rg16i:
   case Texture::F_rg16i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RG16UI;
       return GL_RG16UI;
     } else {
     } else {
       return GL_RG16I;
       return GL_RG16I;
     }
     }
   case Texture::F_rgb16i:
   case Texture::F_rgb16i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RGB16UI;
       return GL_RGB16UI;
     } else {
     } else {
       return GL_RGB16I;
       return GL_RGB16I;
     }
     }
   case Texture::F_rgba16i:
   case Texture::F_rgba16i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RGBA16UI;
       return GL_RGBA16UI;
     } else {
     } else {
       return GL_RGBA16I;
       return GL_RGBA16I;
@@ -10273,7 +10275,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
   case Texture::F_green:
   case Texture::F_green:
   case Texture::F_blue:
   case Texture::F_blue:
 #ifndef OPENGLES
 #ifndef OPENGLES
-    if (!Texture::is_unsigned(tex->get_component_type())) {
+    if (!Texture::is_unsigned(component_type)) {
       return GL_R8_SNORM;
       return GL_R8_SNORM;
     } else
     } else
 #endif
 #endif
@@ -10298,7 +10300,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
     return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE;
     return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE;
 #else
 #else
     if (_supports_luminance_texture) {
     if (_supports_luminance_texture) {
-      switch (tex->get_component_type()) {
+      switch (component_type) {
       case Texture::T_float:
       case Texture::T_float:
       case Texture::T_half_float:
       case Texture::T_half_float:
         return GL_LUMINANCE16F_ARB;
         return GL_LUMINANCE16F_ARB;
@@ -10310,7 +10312,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
         return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE;
         return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE;
       }
       }
     } else {
     } else {
-      switch (tex->get_component_type()) {
+      switch (component_type) {
       case Texture::T_float:
       case Texture::T_float:
       case Texture::T_half_float:
       case Texture::T_half_float:
         return GL_R16F;
         return GL_R16F;
@@ -10329,7 +10331,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
     return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA;
     return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA;
 #else
 #else
     if (_supports_luminance_texture) {
     if (_supports_luminance_texture) {
-      switch (tex->get_component_type()) {
+      switch (component_type) {
       case Texture::T_float:
       case Texture::T_float:
       case Texture::T_half_float:
       case Texture::T_half_float:
         return GL_LUMINANCE_ALPHA16F_ARB;
         return GL_LUMINANCE_ALPHA16F_ARB;
@@ -10341,7 +10343,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
         return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA;
         return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA;
       }
       }
     } else {
     } else {
-      switch (tex->get_component_type()) {
+      switch (component_type) {
       case Texture::T_float:
       case Texture::T_float:
       case Texture::T_half_float:
       case Texture::T_half_float:
         return GL_RG16F;
         return GL_RG16F;
@@ -10375,25 +10377,25 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
 
 
 #ifndef OPENGLES_1
 #ifndef OPENGLES_1
   case Texture::F_r32i:
   case Texture::F_r32i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_R32UI;
       return GL_R32UI;
     } else {
     } else {
       return GL_R32I;
       return GL_R32I;
     }
     }
   case Texture::F_rg32i:
   case Texture::F_rg32i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RG32UI;
       return GL_RG32UI;
     } else {
     } else {
       return GL_RG32I;
       return GL_RG32I;
     }
     }
   case Texture::F_rgb32i:
   case Texture::F_rgb32i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RGB32UI;
       return GL_RGB32UI;
     } else {
     } else {
       return GL_RGB32I;
       return GL_RGB32I;
     }
     }
   case Texture::F_rgba32i:
   case Texture::F_rgba32i:
-    if (Texture::is_unsigned(tex->get_component_type())) {
+    if (Texture::is_unsigned(component_type)) {
       return GL_RGBA32UI;
       return GL_RGBA32UI;
     } else {
     } else {
       return GL_RGBA32I;
       return GL_RGBA32I;