Hi Eldar Only the second way is good, but create an uniform with 5 element and not 20.
in your "for loop" be sure sz == 5. Otherwise all is good in the code you show us. HTH David 2012/5/8 Eldar Insafutdinov <e.insafutdi...@gmail.com> > Hi > > I am trying to use uniform arrays with OSG, but it fails. Here are the > snippets of code that a'm using: > > > Code: > > osg::StateSet *ss = node->getOrCreateStateSet(); > > // one way of populating uniform array that I tried > for(int i = 0; i < sz; ++i) > { > char buf[30]; > sprintf(buf, "colourPoints[%d]", i); > osg::Vec3 colour = osg::Vec3(1.0, 0.0, 1.0); > ss->addUniform(new osg::Uniform(buf, osg::Vec4(colour, 1.0))); > } > > // another way > osg::Uniform *colourPoints = new osg::Uniform(osg::Uniform::FLOAT_VEC4, > "colourPoints", 20); > for(int i = 0; i < sz; ++i) > { > osg::Vec3 colour = osg::Vec3(1.0, 0.0, 1.0); > colourPoints->setElement(i, osg::Vec4(colour, 1.0)); > } > ss->addUniform(colourPoints); > > // and glsl > uniform vec4 colourPoints[5]; > > void main(void) > { > vec4 col = colourPoints[1]; > gl_FragColor = col; > } > > > > > I tried to set up uniforms both ways but neither of them worked and all I > get is a black colour. It must be something obvious that I am missing.. > > Cheers, > Eldar > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=47598#47598 > > > > > > _______________________________________________ > osg-users mailing list > osg-users@lists.openscenegraph.org > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org