osgDB.ObjectProperty
类表示在属性列表中描述对象属性的对象。这个类被用来存储 osgDB.Registry
的对象的属性,比如文件后缀名、文件读写器、对象拷贝器等。该类继承自 osg::Referenced
类,引用计数由 osg::ref_ptr
类进行管理。
以下是一些 osgDB.ObjectProperty
类的公共成员函数:
构造函数。
参数:
name
:描述对象属性的名称,可以用作键值。object
:存储在属性列表中的对象。设置对象属性名称。
参数:
name
:描述对象属性的名称,可以用作键值。获取对象属性名称。
返回值:
设置存储在属性列表中的对象。
参数:
object
:待设置的对象。获取存储在属性列表中的对象。
返回值:
获取存储在属性列表中的对象的常量引用。
返回值:
这里是一个 osgDB.ObjectProperty
类的例子:
#include <osgDB/ObjectWrapper>
#include <osgDB/Registry>
#include <iostream>
int main(int argc, char** argv)
{
osgDB::ObjectWrapperRegistry* wrapperReg = osgDB::Registry::instance()->getObjectWrapperRegistry();
osgDB::ObjectWrapper* wrapper = wrapperReg->getOrCreateWrapperForObject<osg::Texture>();
osg::ref_ptr<osg::Texture> texture = new osg::Texture();
osgDB::ObjectProperty* prop = new osgDB::ObjectProperty(wrapper->className(), texture.get());
prop->setName(".tex");
osgDB::Registry::instance()->getObjectWrapperManager()->addObjectProperty("osg::Texture", prop);
const osgDB::ObjectPropertyList& props = osgDB::Registry::instance()->getObjectWrapperManager()->getObjectPropertyList("osg::Texture");
for (osgDB::ObjectPropertyList::const_iterator itr = props.begin(); itr != props.end(); ++itr)
{
std::cout << "Name: " << itr->get()->getName() << ", Object: " << itr->get()->getObject()->className() << std::endl;
}
}
这里我们首先获取 osg::Texture
的包装器,并创建一个 osg::Texture
的实例。然后我们创建一个 osgDB.ObjectProperty
实例,并设置名称为 ".tex"
,对象为 osg::Texture
实例,并将其加入 osgDB.Registry
中。最后,我们打印这个属性列表中所有 osg::Texture
的属性名称和对象类名。