Hi Bemt,

i think you got something wrong in the beginning. There are 3 possible ways to 
apply a color to a vertex:

- Material: 
  Materials define how the surface is interacting with lights. 
  Most times you are only intereseted in diffuse value.

osg::Material * mat = 
dynamic_cast<osg::Material*>(geometry)->getOrCreateStateSet()->getAttribute(osg::StateAttribute::MATERIAL));
mat->getDiffuse(osg::Material::Face::FRONT_AND_BACK));

- ColorArray:
  A simple color value that is just applied to a vertex

ptrOSGNode->getColorArray()

- Texture:
  An image applied on the surface:

osg::Texture2D * texture = 
dynamic_cast<osg::Texture2D*>(geometry)->getOrCreateStateSet()->getTextureAttribute(0,
 osg::StateAttribute::TEXTURE));

All these are DIFFERENT ways to apply a color to a vertex. You should have said 
in the beginning that you apply a texture to all vertices. : )

Your answer should be for one position:

i : index of current vertex

osg::Vec2Array * texCoords = dynamic_cast<osg::Vec2Array 
*>(geometry->getTexCoordArray(0)); 
osg::Vec4 color = texture->getImage()->getColor(texCoords->operator[](i));

Cheers,
NoxxKn

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=66695#66695





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to