osg.NodeAcceptOp 是 OpenSceneGraph 库中的一个类,它实现了 OSG 节点的访问操作。本文就该类进行详细介绍。
osg::NodeAcceptOp
osg::NodeVisitor --> osg::NodeAcceptOp
#include <osg/NodeVisitor>
NodeAcceptOp(const std::string& className, const bool ignoreDisabled = true)
构造函数创建 NodeAcceptOp 的实例,参数 className 表示要访问的节点的类名,ignoreDisabled 表示是否忽略被禁止的节点,其默认值为 true。
virtual void operator() (Node& node)
函数 operator() 定义了对节点的访问操作。
#include <osg/Geode>
#include <osg/NodeAcceptOp>
int main()
{
// 创建一个 Geode 对象
osg::ref_ptr<osg::Geode> geode = new osg::Geode();
// 创建三角形顶点数组
osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array;
vertices->push_back(osg::Vec3(-1.0f, 0.0f, 0.0f));
vertices->push_back(osg::Vec3(0.0f, 1.0f, 0.0f));
vertices->push_back(osg::Vec3(1.0f, 0.0f, 0.0f));
// 设置 Geode 的几何体
osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry();
geometry->setVertexArray(vertices.get());
geometry->addPrimitiveSet(new osg::DrawArrays(GL_TRIANGLES, 0, 3));
geode->addDrawable(geometry.get());
// 创建 NodeAcceptOp 对象
osg::NodeAcceptOp nodeOp("Geode");
// 访问节点
geode->accept(nodeOp);
return 0;
}