Browse Source

small opt

cxgeorge 24 years ago
parent
commit
d65d5d9dab
1 changed files with 26 additions and 21 deletions
  1. 26 21
      panda/src/glgsg/glGraphicsStateGuardian.cxx

+ 26 - 21
panda/src/glgsg/glGraphicsStateGuardian.cxx

@@ -517,30 +517,35 @@ render_frame(const AllAttributesWrapper &initial_state) {
 
   // Now we're done with the frame processing.  Clean up.
 
-  // Let's turn off all the lights we had on, and clear the light
-  // cache--to force the lights to be reissued next frame, in case
-  // their parameters or positions have changed between frames.
-  
-  for (int i = 0; i < _max_lights; i++) {
-    if (_light_enabled[i]) {
-      enable_light(i, false);
-    }
-    _available_light_ids[i] = NULL;
+  if(_lighting_enabled) {
+	  // Let's turn off all the lights we had on, and clear the light
+	  // cache--to force the lights to be reissued next frame, in case
+	  // their parameters or positions have changed between frames.
+
+	  for (int i = 0; i < _max_lights; i++) {
+		if (_light_enabled[i]) {
+		  enable_light(i, false);
+		}
+		_available_light_ids[i] = NULL;
+	  }
+
+	  // Also force the lighting state to unlit, so that issue_light()
+	  // will be guaranteed to be called next frame even if we have the
+	  // same set of light pointers we had this frame.
+	  NodeAttributes state;
+	  state.set_attribute(LightTransition::get_class_type(), new LightAttribute);
+	  set_state(state, false);
+
+	  // All this work to undo the lighting state each frame doesn't seem
+	  // ideal--there may be a better way.  Maybe if the lights were just
+	  // more aware of whether their parameters or positions have changed
+	  // at all?
   }
 
-  // Also force the lighting state to unlit, so that issue_light()
-  // will be guaranteed to be called next frame even if we have the
-  // same set of light pointers we had this frame.
-  NodeAttributes state;
-  state.set_attribute(LightTransition::get_class_type(), new LightAttribute);
-  set_state(state, false);
-
-  // All this work to undo the lighting state each frame doesn't seem
-  // ideal--there may be a better way.  Maybe if the lights were just
-  // more aware of whether their parameters or positions have changed
-  // at all?
-
+#ifndef NDEBUG
   report_errors();
+#endif
+
   _win->end_frame();
 
 #ifdef GSG_VERBOSE