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

📄 layer.cpp

📁 最新osg包
💻 CPP
字号:
#include <osgTerrain/Layer>#include <iostream>#include <string>#include <osg/Vec3>#include <osg/Vec4>#include <osg/io_utils>#include <osgDB/ReadFile>#include <osgDB/Registry>#include <osgDB/Input>#include <osgDB/Output>#include <osgDB/ParameterOutput>bool Layer_readLocalData(osg::Object &obj, osgDB::Input &fr);bool Layer_writeLocalData(const osg::Object &obj, osgDB::Output &fw);bool Layer_matchFilterStr(const char* str, osg::Texture::FilterMode& filter);const char* Layer_getFilterStr(osg::Texture::FilterMode filter);osgDB::RegisterDotOsgWrapperProxy Layer_Proxy(    new osgTerrain::Layer,    "Layer",    "Object Layer",    Layer_readLocalData,    Layer_writeLocalData);bool Layer_readLocalData(osg::Object& obj, osgDB::Input &fr){    osgTerrain::Layer& layer = static_cast<osgTerrain::Layer&>(obj);    bool itrAdvanced = false;        osg::ref_ptr<osg::Object> readObject = fr.readObjectOfType(osgDB::type_wrapper<osgTerrain::Locator>());    osgTerrain::Locator* locator = dynamic_cast<osgTerrain::Locator*>(readObject.get());    if (locator) layer.setLocator(locator);        osg::Texture::FilterMode filter;    if (fr[0].matchWord("MinFilter") && Layer_matchFilterStr(fr[1].getStr(),filter))    {        layer.setMinFilter(filter);        fr+=2;        itrAdvanced = true;    }    if ((fr[0].matchWord("Filter") || fr[0].matchWord("MagFilter")) &&        Layer_matchFilterStr(fr[1].getStr(),filter))    {        layer.setMagFilter(filter);        fr+=2;        itrAdvanced = true;    }    unsigned int minLevel=0;    if (fr.read("MinLevel",minLevel))    {        itrAdvanced = true;        layer.setMinLevel(minLevel);    }    unsigned int maxLevel = MAXIMUM_NUMBER_OF_LEVELS;    if (fr.read("MaxLevel",maxLevel))    {        itrAdvanced = true;        layer.setMaxLevel(maxLevel);    }    return itrAdvanced;}bool Layer_writeLocalData(const osg::Object& obj, osgDB::Output& fw){    const osgTerrain::Layer& layer = static_cast<const osgTerrain::Layer&>(obj);        if (layer.getLocator() && !(layer.getLocator()->getDefinedInFile()))    {        fw.writeObject(*layer.getLocator());    }        fw.indent()<<"MinFilter "<<Layer_getFilterStr(layer.getMinFilter())<<std::endl;    fw.indent()<<"MagFilter "<<Layer_getFilterStr(layer.getMagFilter())<<std::endl;    if (layer.getMinLevel()!=0)    {        fw.indent()<<"MinLevel "<<layer.getMinLevel()<<std::endl;    }     if (layer.getMaxLevel()!=MAXIMUM_NUMBER_OF_LEVELS)    {        fw.indent()<<"MaxLevel "<<layer.getMaxLevel()<<std::endl;    }     return true;}bool Layer_matchFilterStr(const char* str, osg::Texture::FilterMode& filter){    if (strcmp(str,"NEAREST")==0) filter = osg::Texture::NEAREST;    else if (strcmp(str,"LINEAR")==0) filter = osg::Texture::LINEAR;    else if (strcmp(str,"NEAREST_MIPMAP_NEAREST")==0) filter = osg::Texture::NEAREST_MIPMAP_NEAREST;    else if (strcmp(str,"LINEAR_MIPMAP_NEAREST")==0) filter = osg::Texture::LINEAR_MIPMAP_NEAREST;    else if (strcmp(str,"NEAREST_MIPMAP_LINEAR")==0) filter = osg::Texture::NEAREST_MIPMAP_LINEAR;    else if (strcmp(str,"LINEAR_MIPMAP_LINEAR")==0) filter = osg::Texture::LINEAR_MIPMAP_LINEAR;    else if (strcmp(str,"ANISOTROPIC")==0) filter = osg::Texture::LINEAR;    else return false;    return true;}const char* Layer_getFilterStr(osg::Texture::FilterMode filter){    switch(filter)    {        case(osg::Texture::NEAREST): return "NEAREST";        case(osg::Texture::LINEAR): return "LINEAR";        case(osg::Texture::NEAREST_MIPMAP_NEAREST): return "NEAREST_MIPMAP_NEAREST";        case(osg::Texture::LINEAR_MIPMAP_NEAREST): return "LINEAR_MIPMAP_NEAREST";        case(osg::Texture::NEAREST_MIPMAP_LINEAR): return "NEAREST_MIPMAP_LINEAR";        case(osg::Texture::LINEAR_MIPMAP_LINEAR): return "LINEAR_MIPMAP_LINEAR";    }    return "";}

⌨️ 快捷键说明

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