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

📄 texgen.cpp

📁 最新osg包
💻 CPP
字号:
#if defined(_MSC_VER)    #pragma warning( disable : 4786 )#endif#include "osg/TexGen"#include "osg/io_utils"#include "osgDB/Registry"#include "osgDB/Input"#include "osgDB/Output"using namespace osg;using namespace osgDB;// forward declare functions to use later.bool TexGen_readLocalData(Object& obj, Input& fr);bool TexGen_writeLocalData(const Object& obj, Output& fw);bool TexGen_matchModeStr(const char* str,TexGen::Mode& mode);const char* TexGen_getModeStr(TexGen::Mode mode);// register the read and write functions with the osgDB::Registry.RegisterDotOsgWrapperProxy g_TexGenProxy(    new osg::TexGen,    "TexGen",    "Object StateAttribute TexGen",    &TexGen_readLocalData,    &TexGen_writeLocalData);bool TexGen_readLocalData(Object& obj, Input& fr){    bool iteratorAdvanced = false;    TexGen& texgen = static_cast<TexGen&>(obj);    TexGen::Mode mode;    if (fr[0].matchWord("mode") && TexGen_matchModeStr(fr[1].getStr(),mode))    {        texgen.setMode(mode);        fr+=2;        iteratorAdvanced = true;    }        osg::Plane plane;    if (fr[0].matchWord("plane_s"))    {        if (fr[1].getFloat(plane[0]) && fr[2].getFloat(plane[1]) &&            fr[3].getFloat(plane[2]) && fr[4].getFloat(plane[3]))        {            texgen.setPlane(TexGen::S,plane);            fr+=5;            iteratorAdvanced = true;        }    }    if (fr[0].matchWord("plane_t"))    {        if (fr[1].getFloat(plane[0]) && fr[2].getFloat(plane[1]) &&            fr[3].getFloat(plane[2]) && fr[4].getFloat(plane[3]))        {            texgen.setPlane(TexGen::T,plane);            fr+=5;            iteratorAdvanced = true;        }    }    if (fr[0].matchWord("plane_r"))    {        if (fr[1].getFloat(plane[0]) && fr[2].getFloat(plane[1]) &&            fr[3].getFloat(plane[2]) && fr[4].getFloat(plane[3]))        {            texgen.setPlane(TexGen::R,plane);            fr+=5;            iteratorAdvanced = true;        }    }    if (fr[0].matchWord("plane_q"))    {        if (fr[1].getFloat(plane[0]) && fr[2].getFloat(plane[1]) &&            fr[3].getFloat(plane[2]) && fr[4].getFloat(plane[3]))        {            texgen.setPlane(TexGen::Q,plane);            fr+=5;            iteratorAdvanced = true;        }    }    return iteratorAdvanced;}bool TexGen_matchModeStr(const char* str,TexGen::Mode& mode){    if (strcmp(str,"EYE_LINEAR")==0) mode = TexGen::EYE_LINEAR;    else if (strcmp(str,"OBJECT_LINEAR")==0) mode = TexGen::OBJECT_LINEAR;    else if (strcmp(str,"SPHERE_MAP")==0) mode = TexGen::SPHERE_MAP;    else if (strcmp(str,"NORMAL_MAP")==0) mode = TexGen::NORMAL_MAP;    else if (strcmp(str,"REFLECTION_MAP")==0) mode = TexGen::REFLECTION_MAP;    else return false;    return true;}const char* TexGen_getModeStr(TexGen::Mode mode){    switch(mode)    {        case(TexGen::EYE_LINEAR): return "EYE_LINEAR";        case(TexGen::OBJECT_LINEAR): return "OBJECT_LINEAR";        case(TexGen::SPHERE_MAP): return "SPHERE_MAP";        case(TexGen::NORMAL_MAP): return "NORMAL_MAP";        case(TexGen::REFLECTION_MAP): return "REFLECTION_MAP";    }    return "";}bool TexGen_writeLocalData(const Object& obj, Output& fw){    const TexGen& texgen = static_cast<const TexGen&>(obj);    fw.indent() << "mode " << TexGen_getModeStr(texgen.getMode()) << std::endl;    if (texgen.getMode() == TexGen::OBJECT_LINEAR || texgen.getMode() == TexGen::EYE_LINEAR)    {        fw.indent() << "plane_s " << texgen.getPlane(TexGen::S) << std::endl;        fw.indent() << "plane_t " << texgen.getPlane(TexGen::T) << std::endl;        fw.indent() << "plane_r " << texgen.getPlane(TexGen::R) << std::endl;        fw.indent() << "plane_q " << texgen.getPlane(TexGen::Q) << std::endl;    }    return true;}

⌨️ 快捷键说明

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