osg.UniformClassNameTrait 类是 OpenSceneGraph 中的一个特征类,用于确定绑定到场景图中的一致变量的类名。一致变量是在渲染期间用于向着色器程序中传递的常量值,例如视图矩阵或光源位置等。
osg::Referenced -> osg::Object -> osg::StateAttribute -> osg::Uniform -> osg::UniformClassNameTrait
以下是 osg.UniformClassNameTrait 中的公共成员函数:
/** 获取 Uniform 中的类名 **/
const std::string& getClassName() const
/** 设置 Uniform 中的类名 **/
void setClassName(const std::string& className)
#include <osg/Uniform>
#include <osgDB/ReadFile>
int main(int argc, char** argv)
{
osg::ref_ptr<osg::Node> model = osgDB::readNodeFile(argv[1]);
osg::ref_ptr<osg::Uniform> layerUniform = new osg::Uniform;
// 设置 Uniform 类名
layerUniform->setClassName("osg::Uniform");
// 将 Uniform 绑定到模型节点的状态集中
model->getOrCreateStateSet()->addUniform(layerUniform.get());
osgViewer::Viewer viewer;
viewer.setSceneData(model);
return viewer.run();
}
在这个示例程序中,我们读取一个 3D 模型,然后创建一个 osg::Uniform 对象,并将其设置为 osg.UniformClassNameTrait 中定义的默认值。最后,我们将 Uniform 绑定到模型节点的状态集中。