hello,
I was wondering if vertex data stored in i.e.
PT(GeomVertexData) mVData;
can be shared… i.e.
I have a polygons class which I want to render
the triangles that make up the polygon, so I store the data like this
GeomVertexRewriter mVertices;
GeomVertexRewriter mNormals;
GeomVertexRewriter mColors;
PT(Geom) mPolyGeom;
in each polygon. I initialise the Geom like this
LVector4f debugColor(1.0f, 0, 0, 0.3f);
PT(Geom) meshGeom;
meshGeom = new Geom(mVData);
for (unsigned int i = 0; i < mPolyVerts.size(); ++i)
{
LVector3f& vertex = mPolyVerts[i]->GetPosition();
mVertices.add_data3f(vertex);
mNormals.add_data3f(0, 1, 0);
mColors.add_data4f(debugColor);
}
PT(GeomTriangles) prim = new GeomTriangles(Geom::UH_dynamic);
unsigned int zeroVert = mPolyVerts[0]->VertexID();
unsigned int maxIndex = mPolyVerts.size() - 1;
for (unsigned int i = maxIndex; i > 1; --i)
{
unsigned int indexA = mPolyVerts[i]->VertexID();
prim->add_vertex(zeroVert);
prim->add_vertex(indexA);
unsigned int next = i - 1;
unsigned int indexB = mPolyVerts[next]->VertexID();
prim->add_vertex(indexB);
}
prim->close_primitive();
meshGeom->add_primitive(prim);
mPolyGeom = meshGeom;
mPolygonNode = new GeomNode("DebugPolygonNode");
mPolygonNode->add_geom(mPolyGeom);
I want this geometry to be normal triangles.
Now I want to render somewhere else the wireframe of the polygons , hence I thought all I need to do is store another
PT(Geom) mWireframeGeom;
GeomVertexRewriter mWireframeVertices;
GeomVertexRewriter mWireframeNormals;
GeomVertexRewriter mWireframeColors;
and I initialise this as well with mVData.
And then as GeomLines
PT(GeomLines) prim;
prim = new GeomLines(Geom::UH_dynamic);
I get weird results… The lines geom is set to render in black while the trianglGeom is set to render in red . Yet what I get is a mix of black and red colored meshes. If I remove either of the geoms then the result looks as expected and all is fine.
So can I initialise 2 different geoms from the same vertex data ?
here a screenshot