Browse Source

impose max-collect-vertices and max-collect-indices on limits reported by GSG

David Rose 18 years ago
parent
commit
f8b3f0d017
1 changed files with 9 additions and 6 deletions
  1. 9 6
      panda/src/pgraph/sceneGraphReducer.cxx

+ 9 - 6
panda/src/pgraph/sceneGraphReducer.cxx

@@ -52,11 +52,13 @@ set_gsg(GraphicsStateGuardianBase *gsg) {
     _gsg = GraphicsStateGuardianBase::get_default_gsg();
   }
 
+  int max_vertices = max_collect_vertices;
+
   if (_gsg != (GraphicsStateGuardianBase *)NULL) {
-    _transformer.set_max_collect_vertices(_gsg->get_max_vertices_per_array());
-  } else {
-    _transformer.set_max_collect_vertices(max_collect_vertices);
+    max_vertices = min(max_vertices, _gsg->get_max_vertices_per_array());
   }
+
+  _transformer.set_max_collect_vertices(max_vertices);
 }
 
 ////////////////////////////////////////////////////////////////////
@@ -139,11 +141,12 @@ flatten(PandaNode *root, int combine_siblings_bits) {
 void SceneGraphReducer::
 unify(PandaNode *root) {
   PStatTimer timer(_unify_collector);
+
+  int max_indices = max_collect_indices;
   if (_gsg != (GraphicsStateGuardianBase *)NULL) {
-    r_unify(root, _gsg->get_max_vertices_per_primitive());
-  } else {
-    r_unify(root, max_collect_indices);
+    max_indices = min(max_indices, _gsg->get_max_vertices_per_primitive());
   }
+  r_unify(root, max_indices);
 }
 
 ////////////////////////////////////////////////////////////////////