osgAnimation.Vec3ArrayPacked
是OpenSceneGraph中的一个类,表示一个压缩的3维向量数组。
osgAnimation.Vec3ArrayPacked
提供了一种压缩3维向量数组的方式,可以在使用大量向量数据时显著降低内存占用。该类基于LZ4压缩算法,可以实现较高的压缩比。
Vec3ArrayPacked()
: 构造一个空的Vec3ArrayPacked
对象。Vec3ArrayPacked(int size, float* data)
: 构造含有size
个向量的Vec3ArrayPacked
对象,向量数据指针为data
。void compress(Vec3Array* v)
: 将一个Vec3Array
对象压缩为Vec3ArrayPacked
对象。void decompress(Vec3Array* v)
: 将一个Vec3ArrayPacked
对象解压为Vec3Array
对象。void setCompressedData(int size, const char* data)
: 设置压缩后的数据。const char* getCompressedData() const
: 获取压缩后的数据。int getCompressedDataSize() const
: 获取压缩后的数据大小(字节数)。int getVec3ArraySize() const
: 获取包含的向量个数。void setVec3ArraySize(int size)
: 设置包含的向量个数。osg::Vec3 operator[](int i) const
: 获取第i
个向量。osg::ref_ptr<osgAnimation::Vec3ArrayPacked> vecArrayPacked = new osgAnimation::Vec3ArrayPacked();
osg::ref_ptr<osg::Vec3Array> vecArray = new osg::Vec3Array();
vecArray->push_back(osg::Vec3(1.0f, 2.0f, 3.0f));
vecArray->push_back(osg::Vec3(4.0f, 5.0f, 6.0f));
vecArray->push_back(osg::Vec3(7.0f, 8.0f, 9.0f));
vecArrayPacked->compress(vecArray.get());
vecArrayPacked->getCompressedDataSize(); // 15
osg::ref_ptr<osg::Vec3Array> vecArray2 = new osg::Vec3Array();
vecArrayPacked->decompress(vecArray2.get());
std::cout << (*vecArray2)[0] << std::endl; // (1,2,3)