osgDB.VectorSerializer是OpenSceneGraph的一个序列化工具,旨在将数据结构的向量化表示与二进制数据流的序列化相结合,实现数据的存储和传输。
class VectorSerializer
VectorSerializer(bool readingMode = true)
构造函数,创建一个VectorSerializer
对象。
参数readingMode
表示是否为读取模式,默认为true
。
void serialize(unsigned int value)
序列化一个无符号整型数到数据流中。
void serialize(int value)
序列化一个整型数到数据流中。
void serialize(float value)
序列化一个浮点数到数据流中。
void serialize(double value)
序列化一个双精度浮点数到数据流中。
void serialize(const osg::Vec2& vec)
序列化一个二维向量到数据流中。
void serialize(const osg::Vec3& vec)
序列化一个三维向量到数据流中。
void serialize(const osg::Vec4& vec)
序列化一个四维向量到数据流中。
void serialize(const osg::Matrix& mat)
序列化一个矩阵到数据流中。
void serialize(const osg::Quat& quat)
序列化一个四元数到数据流中。
void serialize(const osg::Plane& plane)
序列化一个平面到数据流中。
void serialize(const osg::BoundingSphere& bs)
序列化一个包围球到数据流中。
void serialize(const osg::BoundingBox& bb)
序列化一个包围盒到数据流中。
void serialize(const std::string& str)
序列化一个字符串到数据流中。
template<class T> void serialize(T& t)
序列化一个自定义类型到数据流中。
void deserialize(unsigned int& value)
从数据流中反序列化无符号整型数。
void deserialize(int& value)
从数据流中反序列化整型数。
void deserialize(float& value)
从数据流中反序列化浮点数。
void deserialize(double& value)
从数据流中反序列化双精度浮点数。
void deserialize(osg::Vec2& vec)
从数据流中反序列化二维向量。
void deserialize(osg::Vec3& vec)
从数据流中反序列化三维向量。
void deserialize(osg::Vec4& vec)
从数据流中反序列化四维向量。
void deserialize(osg::Matrix& mat)
从数据流中反序列化矩阵。
void deserialize(osg::Quat& quat)
从数据流中反序列化四元数。
void deserialize(osg::Plane& plane)
从数据流中反序列化平面。
void deserialize(osg::BoundingSphere& bs)
从数据流中反序列化包围球。
void deserialize(osg::BoundingBox& bb)
从数据流中反序列化包围盒。
void deserialize(std::string& str)
从数据流中反序列化字符串。
template<class T> void deserialize(T& t)
从数据流中反序列化自定义类型。
#include <osgDB/VectorSerializer>
#include <cmath>
#include <iostream>
int main()
{
unsigned char data[1024];
int dataSize = 0;
// 为写入创建工具对象
osgDB::VectorSerializer writer(false);
// 序列化一个无符号整型数到数据流中
unsigned int value1 = 255;
writer.serialize(value1);
// 序列化一个双精度浮点数到数据流中
double value2 = M_PI;
writer.serialize(value2);
// 序列化一个三维向量到数据流中
osg::Vec3 value3(1.0, 2.0, 3.0);
writer.serialize(value3);
// 将序列化后的数据流拷贝到缓冲区中
dataSize = writer.getDataSize();
writer.write(data, dataSize);
// 为读取创建工具对象
osgDB::VectorSerializer reader(true);
// 从缓冲区中读取数据流
reader.read(data, dataSize);
// 从数据流中反序列化无符号整型数
unsigned int result1;
reader.deserialize(result1);
// 从数据流中反序列化双精度浮点数
double result2;
reader.deserialize(result2);
// 从数据流中反序列化三维向量
osg::Vec3 result3;
reader.deserialize(result3);
// 打印结果
std::cout << result1 << " " << result2 << " " << result3 << std::endl;
return 0;
}