osg.ConstArrayVisitor
是一个用于访问 const
数组的访问器类。
osg.Object
osg.Visitor
osg.NodeVisitor
osg.ArrayVisitor
osg.ConstArrayVisitor
osg.ConstArrayVisitor
是一个纯虚类,不能直接实例化。它的子类可以通过实现虚函数 apply(const GLfloat *array)
、apply(const GLdouble *array)
、apply(const GLint *array)
、apply(const GLuint *array)
来定义如何访问不同类型的数组。
使用时,可以创建一个子类的实例,然后调用 accept(const osg::Array &array)
方法,将待访问的数组传递进去即可。
class MyConstArrayVisitor : public osg::ConstArrayVisitor
{
public:
virtual void apply(const GLfloat* array) { /* 访问 GLfloat 数组 */ }
virtual void apply(const GLdouble* array) { /* 访问 GLdouble 数组 */ }
virtual void apply(const GLint* array) { /* 访问 GLint 数组 */ }
virtual void apply(const GLuint* array) { /* 访问 GLuint 数组 */ }
};
MyConstArrayVisitor v;
osg::Vec3Array* array = new osg::Vec3Array(...);
array->accept(v); // 调用 apply() 访问数组
访问器类的代码应当保证线程安全,因为访问器的虚函数可能会在多线程环境下被调用。
访问器的虚函数可能会访问些许数组元素之外的内存,因此不应当在生产环境中使用此类代码。