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

📄 texenv.cpp

📁 最新osg包
💻 CPP
字号:
#include "osg/TexEnv"#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 TexEnv_readLocalData(Object& obj, Input& fr);bool TexEnv_writeLocalData(const Object& obj, Output& fw);bool TexEnv_matchModeStr(const char* str,TexEnv::Mode& mode);const char* TexEnv_getModeStr(TexEnv::Mode mode);// register the read and write functions with the osgDB::Registry.RegisterDotOsgWrapperProxy g_TexEnvProxy(    new osg::TexEnv,    "TexEnv",    "Object StateAttribute TexEnv",    &TexEnv_readLocalData,    &TexEnv_writeLocalData);bool TexEnv_readLocalData(Object& obj, Input& fr){    bool iteratorAdvanced = false;    TexEnv& texenv = static_cast<TexEnv&>(obj);    TexEnv::Mode mode;    if (fr[0].matchWord("mode") && TexEnv_matchModeStr(fr[1].getStr(),mode))    {        texenv.setMode(mode);        fr+=2;        iteratorAdvanced = true;    }    if (fr.matchSequence("color %f %f %f %f"))    {        osg::Vec4 color;        fr[1].getFloat(color[0]);        fr[2].getFloat(color[1]);        fr[3].getFloat(color[2]);        fr[4].getFloat(color[3]);            texenv.setColor(color);                fr+=5;        iteratorAdvanced = true;    }    return iteratorAdvanced;}bool TexEnv_writeLocalData(const Object& obj, Output& fw){    const TexEnv& texenv = static_cast<const TexEnv&>(obj);    fw.indent() << "mode " << TexEnv_getModeStr(texenv.getMode()) << std::endl;        switch(texenv.getMode())    {        case(TexEnv::DECAL):        case(TexEnv::MODULATE):        case(TexEnv::REPLACE):        case(TexEnv::ADD):            break;        case(TexEnv::BLEND):        default:            fw.indent() << "color " << texenv.getColor() << std::endl;            break;    }    return true;}bool TexEnv_matchModeStr(const char* str,TexEnv::Mode& mode){    if (strcmp(str,"DECAL")==0)         mode = TexEnv::DECAL;    else if (strcmp(str,"MODULATE")==0) mode = TexEnv::MODULATE;    else if (strcmp(str,"BLEND")==0)    mode = TexEnv::BLEND;    else if (strcmp(str,"REPLACE")==0)  mode = TexEnv::REPLACE;    else if (strcmp(str,"ADD")==0)      mode = TexEnv::ADD;    else return false;    return true;}const char* TexEnv_getModeStr(TexEnv::Mode mode){    switch(mode)    {        case(TexEnv::DECAL):    return "DECAL";        case(TexEnv::MODULATE): return "MODULATE";        case(TexEnv::BLEND):    return "BLEND";        case(TexEnv::REPLACE):  return "REPLACE";        case(TexEnv::ADD):      return "ADD";    }    return "";}

⌨️ 快捷键说明

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