OSG着色问题
用osg显示多个三角形,每个三角形的颜色不一样且已知,运行却显示全白,求解。
颜色数组为整形,数值在0~225之间
osgViewer::Viewer viewer;
osg::Group * root = new osg::Group();
osg::ref_ptr<osg::Geode> geode = new osg::Geode;
while(100)
{
osg::ref_ptr<osg::Geometry> geom = new osg::Geometry;
//定义点
osg::ref_ptr<osg::Vec3Array> v = new osg::Vec3Array;
v->push_back(osg::Vec3(V[0][0], V[0][1], V[0][2]));
v->push_back(osg::Vec3(V[1][0], V[1][1], V[1][2]));
v->push_back(osg::Vec3(V[2][0], V[2][1], V[2][2]));
//定义颜色
osg::ref_ptr<osg::Vec4Array> c = new osg::Vec4Array;
geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
c->push_back(osg::Vec4(color[0][0], color[0][1], color[0][2], 255));
c->push_back(osg::Vec4(color[1][0], color[1][1], color[1][2], 255));
c->push_back(osg::Vec4(color[2][0], color[2][1], color[2][2], 255));
//******显示面片
geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLES, 0, 3));
geom->setVertexArray(v.get());
geom->setColorArray(c.get());
geode->addDrawable(geom.get());
}
root->addChild(geode.get());
viewer.setSceneData(root);
viewer.getCamera()->setClearColor(osg::Vec4f(1,1,1,1));
viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));
viewer.addEventHandler(new osgViewer::WindowSizeHandler);
viewer.addEventHandler(new osgViewer::StatsHandler);
viewer.setUpViewInWindow(10,30,800,600);
viewer.realize();
viewer.run();