⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataoutputstream.cpp

📁 最新osg包
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    writeDouble(v.w());    if (_verboseOutput) std::cout<<"read/writeVec4d() ["<<v<<"]"<<std::endl;}void DataOutputStream::writePlane(const osg::Plane& v){    writeDouble(v[0]);    writeDouble(v[1]);    writeDouble(v[2]);    writeDouble(v[3]);    if (_verboseOutput) std::cout<<"read/writePlane() ["<<v<<"]"<<std::endl;}void DataOutputStream::writeVec4ub(const osg::Vec4ub& v){    writeChar(v.r());    writeChar(v.g());    writeChar(v.b());    writeChar(v.a());    if (_verboseOutput) std::cout<<"read/writeVec4ub() ["<<v<<"]"<<std::endl;}void DataOutputStream::writeVec2b(const osg::Vec2b& v){    writeChar(v.r());    writeChar(v.g());    if (_verboseOutput) std::cout<<"read/writeVec2b() ["<<v<<"]"<<std::endl;}void DataOutputStream::writeVec3b(const osg::Vec3b& v){    writeChar(v.r());    writeChar(v.g());    writeChar(v.b());    if (_verboseOutput) std::cout<<"read/writeVec3b() ["<<v<<"]"<<std::endl;}void DataOutputStream::writeVec4b(const osg::Vec4b& v){    writeChar(v.r());    writeChar(v.g());    writeChar(v.b());    writeChar(v.a());    if (_verboseOutput) std::cout<<"read/writeVec4b() ["<<v<<"]"<<std::endl;}void DataOutputStream::writeQuat(const osg::Quat& q){    writeFloat(q.x());    writeFloat(q.y());    writeFloat(q.z());    writeFloat(q.w());    if (_verboseOutput) std::cout<<"read/writeQuat() ["<<q<<"]"<<std::endl;}void DataOutputStream::writeBinding(osg::Geometry::AttributeBinding b){    switch(b){        case osg::Geometry::BIND_OFF:                writeChar((char) 0); break;        case osg::Geometry::BIND_OVERALL:            writeChar((char) 1); break;        case osg::Geometry::BIND_PER_PRIMITIVE:        writeChar((char) 2); break;        case osg::Geometry::BIND_PER_PRIMITIVE_SET:    writeChar((char) 3); break;        case osg::Geometry::BIND_PER_VERTEX:        writeChar((char) 4); break;        default: throw Exception("Unknown binding in DataOutputStream::writeBinding()");    }    if (_verboseOutput) std::cout<<"read/writeBinding() ["<<b<<"]"<<std::endl;}void DataOutputStream::writeArray(const osg::Array* a){    switch(a->getType()){        case osg::Array::IntArrayType:            writeChar((char)0);            writeIntArray(static_cast<const osg::IntArray*>(a));            break;        case osg::Array::UByteArrayType:            writeChar((char)1);            writeUByteArray(static_cast<const osg::UByteArray*>(a));            break;        case osg::Array::UShortArrayType:            writeChar((char)2);            writeUShortArray(static_cast<const osg::UShortArray*>(a));            break;        case osg::Array::UIntArrayType:            writeChar((char)3);            writeUIntArray(static_cast<const osg::UIntArray*>(a));            break;        case osg::Array::Vec4ubArrayType:            writeChar((char)4);            writeVec4ubArray(static_cast<const osg::Vec4ubArray*>(a));            break;        case osg::Array::FloatArrayType:            writeChar((char)5);            writeFloatArray(static_cast<const osg::FloatArray*>(a));            break;        case osg::Array::Vec2ArrayType:            writeChar((char)6);            writeVec2Array(static_cast<const osg::Vec2Array*>(a));            break;        case osg::Array::Vec3ArrayType:            writeChar((char)7);            writeVec3Array(static_cast<const osg::Vec3Array*>(a));            break;         case osg::Array::Vec4ArrayType:            writeChar((char)8);            writeVec4Array(static_cast<const osg::Vec4Array*>(a));            break;         case osg::Array::Vec2sArrayType:             writeChar((char)9);             writeVec2sArray(static_cast<const osg::Vec2sArray*>(a));             break;         case osg::Array::Vec3sArrayType:             writeChar((char)10);             writeVec3sArray(static_cast<const osg::Vec3sArray*>(a));             break;         case osg::Array::Vec4sArrayType:             writeChar((char)11);             writeVec4sArray(static_cast<const osg::Vec4sArray*>(a));             break;         case osg::Array::Vec2bArrayType:             writeChar((char)12);             writeVec2bArray(static_cast<const osg::Vec2bArray*>(a));             break;         case osg::Array::Vec3bArrayType:             writeChar((char)13);             writeVec3bArray(static_cast<const osg::Vec3bArray*>(a));             break;         case osg::Array::Vec4bArrayType:             writeChar((char)14);             writeVec4bArray(static_cast<const osg::Vec4bArray*>(a));             break;         case osg::Array::Vec2dArrayType:             writeChar((char)15);             writeVec2dArray(static_cast<const osg::Vec2dArray*>(a));             break;         case osg::Array::Vec3dArrayType:             writeChar((char)16);             writeVec3dArray(static_cast<const osg::Vec3dArray*>(a));             break;          case osg::Array::Vec4dArrayType:             writeChar((char)17);             writeVec4dArray(static_cast<const osg::Vec4dArray*>(a));             break;        default: throw Exception("Unknown array type in DataOutputStream::writeArray()");    }}void DataOutputStream::writeIntArray(const osg::IntArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeInt(a->index(i));    }    if (_verboseOutput) std::cout<<"read/writeIntArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeUByteArray(const osg::UByteArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeChar((*a)[i]);    }    if (_verboseOutput) std::cout<<"read/writeUByteArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeUShortArray(const osg::UShortArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeUShort((*a)[i]);    }    if (_verboseOutput) std::cout<<"read/writeUShortArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeUIntArray(const osg::UIntArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeInt((*a)[i]);    }    if (_verboseOutput) std::cout<<"read/writeUIntArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeVec4ubArray(const osg::Vec4ubArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeVec4ub((*a)[i]);    }    if (_verboseOutput) std::cout<<"read/writeVec4ubArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writePackedFloatArray(const osg::FloatArray* a, float maxError){    int size = a->getNumElements();    writeInt(size);    if (size==0) return;        float minValue = (*a)[0];    float maxValue = minValue;        for(int i=1; i<size; ++i)    {        if ((*a)[i]<minValue) minValue = (*a)[i];        if ((*a)[i]>maxValue) maxValue = (*a)[i];    }        if (minValue==maxValue)    {        osg::notify(osg::DEBUG_INFO)<<"Writing out "<<size<<" same values "<<minValue<<std::endl;        writeBool(true);        writeFloat(minValue);        return;    }    writeBool(false);        int packingSize = 4;    if (maxError>0.0f)    {            float byteError = 0.0f;        float byteMultiplier = 255.0f/(maxValue-minValue);        float byteInvMultiplier = 1.0f/byteMultiplier;        float shortError = 0.0f;        float shortMultiplier = 65535.0f/(maxValue-minValue);        float shortInvMultiplier = 1.0f/shortMultiplier;        float max_error_byte = 0.0f;        float max_error_short = 0.0f;        for(int i=0; i<size; ++i)        {            float value = (*a)[i];            unsigned char byteValue = (unsigned char)((value-minValue)*byteMultiplier);            unsigned short shortValue = (unsigned short)((value-minValue)*shortMultiplier);            float value_byte = minValue + float(byteValue)*byteInvMultiplier;            float value_short = minValue + float(shortValue)*shortInvMultiplier;            float error_byte = fabsf(value_byte - value);            float error_short = fabsf(value_short - value);            if (error_byte>max_error_byte) max_error_byte = error_byte;            if (error_short>max_error_short) max_error_short = error_short;        }        osg::notify(osg::DEBUG_INFO)<<"maxError "<<maxError<<std::endl;        osg::notify(osg::DEBUG_INFO)<<"Values to write "<<size<<" max_error_byte = "<<max_error_byte<<" max_error_short="<<max_error_short<<std::endl;        if (max_error_byte < maxError) packingSize = 1;        else if (max_error_short < maxError) packingSize = 2;        osg::notify(osg::DEBUG_INFO)<<"packingSize "<<packingSize<<std::endl;    }    if (packingSize==1)    {        writeInt(1);                writeFloat(minValue);        writeFloat(maxValue);                float byteMultiplier = 255.0f/(maxValue-minValue);        for(int i=0; i<size; ++i)        {            unsigned char currentValue = (unsigned char)(((*a)[i]-minValue)*byteMultiplier);            writeUChar(currentValue);        }    }    else if (packingSize==2)    {        writeInt(2);        writeFloat(minValue);        writeFloat(maxValue);                float shortMultiplier = 65535.0f/(maxValue-minValue);        for(int i=0; i<size; ++i)        {            unsigned short currentValue = (unsigned short)(((*a)[i]-minValue)*shortMultiplier);            writeUShort(currentValue);        }    }    else    {                    writeInt(4);        for(int i=0; i<size; ++i)        {            writeFloat((*a)[i]);        }            }    if (_verboseOutput) std::cout<<"read/writePackedFloatArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeFloatArray(const osg::FloatArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeFloat((*a)[i]);    }    if (_verboseOutput) std::cout<<"read/writeFloatArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeVec2Array(const osg::Vec2Array* a){    int size = a->size();    writeInt(size);    for(int i=0;i<size;i++){        writeVec2((*a)[i]);    }    if (_verboseOutput) std::cout<<"read/writeVec2Array() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeVec3Array(const osg::Vec3Array* a){    int size = a->size();    writeInt(size);    for(int i = 0; i < size; i++){        writeVec3((*a)[i]);    }    if (_verboseOutput) std::cout<<"read/writeVec3Array() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeVec4Array(const osg::Vec4Array* a){    int size = a->size();    writeInt(size);    for(int i=0;i<size;i++){        writeVec4((*a)[i]);    }    if (_verboseOutput) std::cout<<"read/writeVec4Array() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeVec2sArray(const osg::Vec2sArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeShort((*a)[i].x());        writeShort((*a)[i].y());    }    if (_verboseOutput) std::cout<<"read/writeVec2sArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeVec3sArray(const osg::Vec3sArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeShort((*a)[i].x());        writeShort((*a)[i].y());        writeShort((*a)[i].z());    }    if (_verboseOutput) std::cout<<"read/writeVec3sArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeVec4sArray(const osg::Vec4sArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeShort((*a)[i].x());        writeShort((*a)[i].y());        writeShort((*a)[i].z());        writeShort((*a)[i].w());    }    if (_verboseOutput) std::cout<<"read/writeVec4sArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeVec2bArray(const osg::Vec2bArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){        writeVec2b((*a)[i]);    }    if (_verboseOutput) std::cout<<"read/writeVec2bArray() ["<<size<<"]"<<std::endl;}void DataOutputStream::writeVec3bArray(const osg::Vec3bArray* a){    int size = a->getNumElements();    writeInt(size);    for(int i =0; i<size ;i++){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -