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

📄 heightfieldlayer.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 HeightFieldLayer_readLocalData(osg::Object &obj, osgDB::Input &fr);bool HeightFieldLayer_writeLocalData(const osg::Object &obj, osgDB::Output &fw);osgDB::RegisterDotOsgWrapperProxy HeightFieldLayer_Proxy(    new osgTerrain::HeightFieldLayer,    "HeightFieldLayer",    "Object Layer HeightFieldLayer",    HeightFieldLayer_readLocalData,    HeightFieldLayer_writeLocalData);bool HeightFieldLayer_readLocalData(osg::Object& obj, osgDB::Input &fr){    osgTerrain::HeightFieldLayer& layer = static_cast<osgTerrain::HeightFieldLayer&>(obj);    bool itrAdvanced = false;        if (fr.matchSequence("file %w") || fr.matchSequence("file %s"))    {        std::string setname;        std::string filename;        osgTerrain::extractSetNameAndFileName(fr[1].getStr(),setname, filename);        if (!filename.empty())        {            osg::ref_ptr<osg::HeightField> hf = osgDB::readHeightFieldFile(filename);            if (hf.valid())            {                layer.setName(setname);                layer.setFileName(filename);                layer.setHeightField(hf.get());                            }        }        fr += 2;        itrAdvanced = true;    }    osg::ref_ptr<osg::Object> readObject = fr.readObjectOfType(osgDB::type_wrapper<osg::HeightField>());    if (readObject.valid()) itrAdvanced = true;    osg::HeightField* hf = dynamic_cast<osg::HeightField*>(readObject.get());    if (hf)    {        layer.setHeightField(hf);    }        return itrAdvanced;}bool HeightFieldLayer_writeLocalData(const osg::Object& obj, osgDB::Output& fw){    const osgTerrain::HeightFieldLayer& layer = static_cast<const osgTerrain::HeightFieldLayer&>(obj);        if (!layer.getFileName().empty())    {        std::string str = osgTerrain::createCompondSetNameAndFileName(layer.getName(), layer.getFileName());        fw.indent()<<"file "<< str << std::endl;    }    else    {        if (layer.getHeightField())        {            fw.writeObject(*layer.getHeightField());        }    }    return true;}

⌨️ 快捷键说明

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