Browse Source

respect vertex color properly

David Rose 17 years ago
parent
commit
cb2819a5d7
2 changed files with 30 additions and 4 deletions
  1. 22 3
      panda/src/parametrics/ropeNode.cxx
  2. 8 1
      panda/src/parametrics/sheetNode.cxx

+ 22 - 3
panda/src/parametrics/ropeNode.cxx

@@ -19,6 +19,7 @@
 #include "cullHandler.h"
 #include "renderState.h"
 #include "renderModeAttrib.h"
+#include "colorAttrib.h"
 #include "bamWriter.h"
 #include "bamReader.h"
 #include "datagram.h"
@@ -375,6 +376,9 @@ render_thread(CullTraverser *trav, CullTraverserData &data,
   
   CPT(RenderAttrib) thick = RenderModeAttrib::make(RenderModeAttrib::M_unchanged, get_thickness());
   CPT(RenderState) state = data._state->add_attrib(thick);
+  if (get_use_vertex_color()) {
+    state = state->add_attrib(ColorAttrib::make_vertex());
+  }
   
   CullableObject *object = 
     new CullableObject(geom, state,
@@ -420,9 +424,14 @@ render_tape(CullTraverser *trav, CullTraverserData &data,
   
   PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
+
+  CPT(RenderState) state = data._state;
+  if (get_use_vertex_color()) {
+    state = state->add_attrib(ColorAttrib::make_vertex());
+  }
   
   CullableObject *object = 
-    new CullableObject(geom, data._state,
+    new CullableObject(geom, state,
                        data.get_net_transform(trav),
                        data.get_modelview_transform(trav),
                        trav->get_gsg());
@@ -472,9 +481,14 @@ render_billboard(CullTraverser *trav, CullTraverserData &data,
   
   PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
+
+  CPT(RenderState) state = data._state;
+  if (get_use_vertex_color()) {
+    state = state->add_attrib(ColorAttrib::make_vertex());
+  }
   
   CullableObject *object = 
-    new CullableObject(geom, data._state,
+    new CullableObject(geom, state,
                        data.get_net_transform(trav),
                        data.get_modelview_transform(trav),
                        trav->get_gsg());
@@ -531,9 +545,14 @@ render_tube(CullTraverser *trav, CullTraverserData &data,
   
   PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
+
+  CPT(RenderState) state = data._state;
+  if (get_use_vertex_color()) {
+    state = state->add_attrib(ColorAttrib::make_vertex());
+  }
   
   CullableObject *object = 
-    new CullableObject(geom, data._state,
+    new CullableObject(geom, state,
                        data.get_net_transform(trav),
                        data.get_modelview_transform(trav),
                        trav->get_gsg());

+ 8 - 1
panda/src/parametrics/sheetNode.cxx

@@ -26,6 +26,8 @@
 #include "geomTristrips.h"
 #include "geomVertexWriter.h"
 #include "boundingSphere.h"
+#include "colorAttrib.h"
+#include "renderState.h"
 
 TypeHandle SheetNode::_type_handle;
 
@@ -347,9 +349,14 @@ render_sheet(CullTraverser *trav, CullTraverserData &data,
   
   PT(Geom) geom = new Geom(vdata);
   geom->add_primitive(strip);
+
+  CPT(RenderState) state = data._state;
+  if (use_vertex_color) {
+    state = state->add_attrib(ColorAttrib::make_vertex());
+  }
   
   CullableObject *object = 
-    new CullableObject(geom, data._state,
+    new CullableObject(geom, state,
                        data.get_net_transform(trav),
                        data.get_modelview_transform(trav),
                        trav->get_gsg());