osg.TemplateUniform
是OpenSceneGraph中用于表示模板统一变量的类。它是osg::Uniform
类的子类,用于设置osg::StateAttribute
的统一变量。模板统一变量是一种特殊类型的统一变量,在开发中特别有用。
可以通过osg::Uniform
类的构造函数和setType()
函数创建模板统一变量,其中osg::Uniform::Type
枚举类型中包含了所有支持的类型。
osg::ref_ptr<osg::Uniform> templateUniform =
new osg::Uniform(osg::Uniform::FLOAT_VEC4, "templateUniform");
在创建模板统一变量时,也可以指定初始值。比如下面的例子展示了如何创建一个INT
类型的模板统一变量并指定初始值。
osg::ref_ptr<osg::Uniform> templateUniform =
new osg::Uniform(osg::Uniform::INT, "templateUniform", 0);
osg::StateSet* stateSet = node->getOrCreateStateSet();
stateSet->addUniform(templateUniform.get());
这样,templateUniform
就可以在一个osg::Drawable
或者osg::Node
中使用了。可以使用osg::getStateSet()
函数获取它的状态集,然后将它添加到状态集中即可。在使用的过程中,可调用osg::Uniform
类的set()
函数修改统一变量的值。
templateUniform->set(osg::Vec4f(1.0f, 0.5f, 0.2f, 1.0f));
OpenSceneGraph 3.4.1 Documentation. Class osg::Uniform. https://download.osgchina.org/docs/OpenSceneGraph-3.4.1/doc/html/classosg_1_1Uniform.html
OpenSceneGraph 3.4.1 Documentation. Class osg::TemplateUniform. https://download.osgchina.org/docs/OpenSceneGraph-3.4.1/doc/html/classosg_1_1TemplateUniform.html