Browse Source

Add support for:
F_rgba16, // 16 bits per R,G,B,A channel
F_rgba32, // 32 bits per R,G,B,A channel

aignacio_sf 19 years ago
parent
commit
b1131ae0da
2 changed files with 23 additions and 2 deletions
  1. 17 0
      panda/src/gobj/texture.cxx
  2. 6 2
      panda/src/gobj/texture.h

+ 17 - 0
panda/src/gobj/texture.cxx

@@ -432,6 +432,13 @@ estimate_texture_memory() const {
   case Texture::F_rgb12:
   case Texture::F_rgb12:
     bpp = 6;
     bpp = 6;
     break;
     break;
+
+  case Texture::F_rgba16:
+    bpp = 8;
+    break;
+  case Texture::F_rgba32:
+    bpp = 16;
+    break;
   }
   }
 
 
   size_t bytes = pixels * bpp;
   size_t bytes = pixels * bpp;
@@ -1360,6 +1367,12 @@ write(ostream &out, int indent_level) const {
   case F_rgbm:
   case F_rgbm:
     out << "rgbm";
     out << "rgbm";
     break;
     break;
+  case F_rgba32:
+    out << "rgba32";
+    break;
+  case F_rgba16:
+    out << "rgba16";
+    break;
   case F_rgba12:
   case F_rgba12:
     out << "rgba12";
     out << "rgba12";
     break;
     break;
@@ -1514,6 +1527,8 @@ set_format(Texture::Format format) {
   case F_rgba5:
   case F_rgba5:
   case F_rgba8:
   case F_rgba8:
   case F_rgba12:
   case F_rgba12:
+  case F_rgba16:
+  case F_rgba32:
     _num_components = 4;
     _num_components = 4;
     break;
     break;
   }
   }
@@ -2435,6 +2450,8 @@ has_alpha(Format format) {
   case F_rgba5:
   case F_rgba5:
   case F_rgba8:
   case F_rgba8:
   case F_rgba12:
   case F_rgba12:
+  case F_rgba16:
+  case F_rgba32:
   case F_luminance_alpha:
   case F_luminance_alpha:
   case F_luminance_alphamask:
   case F_luminance_alphamask:
     return true;
     return true;

+ 6 - 2
panda/src/gobj/texture.h

@@ -103,7 +103,10 @@ PUBLISHED:
 
 
     F_luminance,
     F_luminance,
     F_luminance_alpha,      // 8 bits luminance, 8 bits alpha
     F_luminance_alpha,      // 8 bits luminance, 8 bits alpha
-    F_luminance_alphamask   // 8 bits luminance, only needs 1 bit of alpha
+    F_luminance_alphamask,  // 8 bits luminance, only needs 1 bit of alpha
+
+    F_rgba16,  // 16 bits per R,G,B,A channel
+    F_rgba32,  // 32 bits per R,G,B,A channel
   };
   };
 
 
   enum FilterType {
   enum FilterType {
@@ -345,10 +348,11 @@ PUBLISHED:
 
 
   static bool is_mipmap(FilterType type);
   static bool is_mipmap(FilterType type);
 
 
-public:
   INLINE bool get_match_framebuffer_format() const;
   INLINE bool get_match_framebuffer_format() const;
   INLINE void set_match_framebuffer_format(bool flag);
   INLINE void set_match_framebuffer_format(bool flag);
 
 
+public:
+
   TextureContext *prepare_now(PreparedGraphicsObjects *prepared_objects,
   TextureContext *prepare_now(PreparedGraphicsObjects *prepared_objects,
                               GraphicsStateGuardianBase *gsg);
                               GraphicsStateGuardianBase *gsg);
   void texture_uploaded();
   void texture_uploaded();