Browse Source

*** empty log message ***

David Rose 25 years ago
parent
commit
942e5da169

+ 7 - 1
panda/src/gobj/config_gobj.cxx

@@ -63,6 +63,12 @@ bool textures_down_square = false;
 
 BamTextureMode bam_texture_mode;
 
+// Set this to enable a speedy-load mode where you don't care what the
+// world looks like, you just want it to load in minimal time.  This
+// causes all texture loads via the TexturePool to load the same
+// texture file, which will presumably only be loaded once.
+const string fake_texture_image = config_gobj.GetString("fake-texture-image", "");
+
 
 static BamTextureMode
 parse_texture_mode(const string &mode) {
@@ -93,7 +99,7 @@ ConfigureFn(config_gobj) {
 
   } else {
     textures_up_power_2 = false;
-    textures_down_power_2 = config_gobj.GetBool("textures-power-2", false);
+    textures_down_power_2 = config_gobj.GetBool("textures-power-2", true);
   }
 
   string textures_square = config_gobj.GetString("textures-square", "");

+ 1 - 0
panda/src/gobj/config_gobj.h

@@ -24,6 +24,7 @@ enum BamTextureMode {
   BTM_basename
 };
 extern EXPCL_PANDA BamTextureMode bam_texture_mode;
+extern EXPCL_PANDA const string fake_texture_image;
 
 #endif
 

+ 11 - 1
panda/src/gobj/texture.cxx

@@ -435,6 +435,7 @@ write_datagram(BamWriter *manager, Datagram &me)
   me.add_bool(has_pbuffer);
   if (has_pbuffer) {
     me.add_uint8(_pbuffer->get_format());
+    me.add_uint8(_pbuffer->get_num_components());
   }
 }
 
@@ -469,8 +470,17 @@ fillin(DatagramIterator &scan, BamReader *manager) {
     bool has_pbuffer = scan.get_bool();
     if (has_pbuffer) {
       PixelBuffer::Format format = (PixelBuffer::Format)scan.get_uint8();
+      int num_components = -1;
+      if (scan.get_remaining_size() > 0) {
+	num_components = scan.get_uint8();
+      }
+
       if (_pbuffer != (PixelBuffer *)NULL) {
-	_pbuffer->set_format(format);
+	if (num_components == _pbuffer->get_num_components()) {
+	  // Only reset the format if the number of components hasn't
+	  // changed.
+	  _pbuffer->set_format(format);
+	}
       }
     }
   }

+ 12 - 0
panda/src/gobj/texturePool.cxx

@@ -18,6 +18,10 @@ TexturePool *TexturePool::_global_ptr = (TexturePool *)NULL;
 ////////////////////////////////////////////////////////////////////
 bool TexturePool::
 ns_has_texture(Filename filename) {
+  if (!fake_texture_image.empty()) {
+    filename = fake_texture_image;
+  }
+
   filename.resolve_filename(get_texture_path());
   filename.resolve_filename(get_model_path());
 
@@ -38,6 +42,10 @@ ns_has_texture(Filename filename) {
 ////////////////////////////////////////////////////////////////////
 Texture *TexturePool::
 ns_load_texture(Filename filename) {
+  if (!fake_texture_image.empty()) {
+    filename = fake_texture_image;
+  }
+
   filename.resolve_filename(get_texture_path());
   filename.resolve_filename(get_model_path());
 
@@ -68,6 +76,10 @@ ns_load_texture(Filename filename) {
 ////////////////////////////////////////////////////////////////////
 Texture *TexturePool::
 ns_load_texture(Filename filename, Filename grayfilename) {
+  if (!fake_texture_image.empty()) {
+    return ns_load_texture(fake_texture_image);
+  }
+
   filename.resolve_filename(get_texture_path());
   filename.resolve_filename(get_model_path());