fix for wrong-color objects in directx

This commit is contained in:
David Rose 2009-01-08 03:15:12 +00:00
parent db667ad5ca
commit e5cf8b1517
2 changed files with 12 additions and 14 deletions

View File

@ -80,7 +80,7 @@ make_off() {
////////////////////////////////////////////////////////////////////
CPT(RenderAttrib) ColorAttrib::
make_default() {
return return_new(new ColorAttrib);
return make_flat(Colorf(1.0f, 1.0f, 1.0f, 1.0f));
}
////////////////////////////////////////////////////////////////////

View File

@ -21,6 +21,7 @@
#include "textureAttrib.h"
#include "renderState.h"
#include "shadeModelAttrib.h"
#include "colorAttrib.h"
#include "geom.h"
#include "geomTristrips.h"
#include "geomVertexWriter.h"
@ -221,25 +222,19 @@ generate_flat_geom(const LVecBase4f &frame) {
CPT(GeomVertexFormat) format;
if (has_texture()) {
format = GeomVertexFormat::get_v3cpt2();
format = GeomVertexFormat::get_v3t2();
} else {
format = GeomVertexFormat::get_v3cp();
format = GeomVertexFormat::get_v3();
}
PT(GeomVertexData) vdata = new GeomVertexData
("PGFrame", format, Geom::UH_static);
GeomVertexWriter vertex(vdata, InternalName::get_vertex());
GeomVertexWriter color(vdata, InternalName::get_color());
vertex.add_data3f(left, 0.0f, top);
vertex.add_data3f(left, 0.0f, bottom);
vertex.add_data3f(right, 0.0f, top);
vertex.add_data3f(right, 0.0f, bottom);
color.add_data4f(_color);
color.add_data4f(_color);
color.add_data4f(_color);
color.add_data4f(_color);
if (has_texture()) {
// Generate UV's.
@ -259,9 +254,10 @@ generate_flat_geom(const LVecBase4f &frame) {
strip->add_next_vertices(4);
strip->close_primitive();
CPT(RenderState) state = RenderState::make(ColorAttrib::make_flat(_color));
PT(Geom) geom = new Geom(vdata);
geom->add_primitive(strip);
gnode->add_geom(geom);
gnode->add_geom(geom, state);
if (has_texture()) {
CPT(RenderState) state =
@ -432,8 +428,9 @@ generate_bevel_geom(const LVecBase4f &frame, bool in) {
PT(Geom) geom = new Geom(vdata);
geom->add_primitive(strip);
CPT(RenderState) flat_state = RenderState::make(ShadeModelAttrib::make(ShadeModelAttrib::M_flat));
gnode->add_geom(geom, flat_state);
CPT(RenderState) state = RenderState::make(ShadeModelAttrib::make(ShadeModelAttrib::M_flat),
ColorAttrib::make_vertex());
gnode->add_geom(geom, state);
// For now, beveled and grooved geoms don't support textures. Easy
// to add if anyone really wants this.
@ -673,8 +670,9 @@ generate_groove_geom(const LVecBase4f &frame, bool in) {
PT(Geom) geom = new Geom(vdata);
geom->add_primitive(strip);
CPT(RenderState) flat_state = RenderState::make(ShadeModelAttrib::make(ShadeModelAttrib::M_flat));
gnode->add_geom(geom, flat_state);
CPT(RenderState) state = RenderState::make(ShadeModelAttrib::make(ShadeModelAttrib::M_flat),
ColorAttrib::make_vertex());
gnode->add_geom(geom, state);
// For now, beveled and grooved geoms don't support textures. Easy
// to add if anyone really wants this.