OpenSceneGraph中的osg.GraphicsObject
类是一个基类,用于表示可渲染的图形对象。它的子类包括几何体(osg::Geometry
)、纹理(osg::Texture
)和图元(osg::PrimitiveSet
),它们都是渲染场景中实际可见的对象。
osg::GraphicsObject();
osg.GraphicsObject
类的构造函数是空函数,不执行任何操作。
virtual GLenum getGLObjectType() const = 0;
该函数返回该对象在OpenGL中的类型。返回值是一个枚举类型,可以是GL_TEXTURE
、GL_BUFFER
、GL_FRAMEBUFFER
等等。
virtual unsigned int getGLObjectID() const = 0;
该函数返回对象在OpenGL中的ID,这个ID可以用来识别OpenGL对象,比如用于绑定对象等操作。
virtual void releaseGLObjects(osg::State* state = nullptr) const = 0;
该函数释放所有在OpenGL中分配的资源,例如OpenGL纹理对象,OpenGL缓冲对象等等。如果传递了osg::State
指针,而且OpenGL上下文在指针标识的状态集合中,那么这个函数将在该上下文中释放资源。否则,它将释放所有资源。
virtual osg::Object* cloneType() const override { return new osg::GraphicsObject(); }
virtual osg::Object* clone(const osg::CopyOp&) const override { return new osg::GraphicsObject(); }
这两个函数是osg::Object
类的纯虚函数,用于支持对象的深度复制。osg.GraphicsObject
类并没有自己的成员变量,构造函数也是空函数,因此这两个函数也没有别的实现,只是返回了 osg.GraphicsObject
类的实例。
virtual bool isSameKindAs(const osg::Object* obj) const override { return dynamic_cast<const osg::GraphicsObject*>(obj) != nullptr; }
该函数比较该对象的类型是否和另一个osg.Object
对象的类型相同。如果该对象的类是另一个对象的子类,则返回true。否则,返回false。