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

📄 light.cpp

📁 最新osg包
💻 CPP
字号:
#if defined(_MSC_VER)    #pragma warning( disable : 4786 )#endif#include "osg/Light"#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 Light_readLocalData(Object& obj, Input& fr);bool Light_writeLocalData(const Object& obj, Output& fw);// register the read and write functions with the osgDB::Registry.RegisterDotOsgWrapperProxy g_LightProxy(    new osg::Light,    "Light",    "Object StateAttribute Light",    &Light_readLocalData,    &Light_writeLocalData);bool Light_readLocalData(Object& obj, Input& fr){    bool iteratorAdvanced = false;    Light& light = static_cast<Light&>(obj);    if (fr[0].matchWord("light_num"))    {        int lightnum=0;        if (fr[1].getInt(lightnum))        {            light.setLightNum(lightnum);            fr += 2;            iteratorAdvanced = true;        }    }#define ReadVec4(A,B) {  \    if (fr[0].matchWord(B) && \        fr[1].getFloat(vec4[0]) && \        fr[2].getFloat(vec4[1]) && \        fr[3].getFloat(vec4[2]) && \        fr[4].getFloat(vec4[3])) \    { \        light.A(vec4); \        fr+=5; \        iteratorAdvanced = true; \    } \} #define ReadVec3(A,B) {  \    if (fr[0].matchWord(B) && \        fr[1].getFloat(vec3[0]) && \        fr[2].getFloat(vec3[1]) && \        fr[3].getFloat(vec3[2])) \    { \        light.A(vec3); \        fr+=4; \        iteratorAdvanced = true; \    } \} #define ReadFloat(A,B) {  \    if (fr[0].matchWord(B) && \        fr[1].getFloat(value)) \    { \        light.A(value); \        fr+=2; \        iteratorAdvanced = true; \    } \}     Vec4 vec4;    ReadVec4(setAmbient,"ambient")    ReadVec4(setDiffuse,"diffuse")    ReadVec4(setSpecular,"specular")    ReadVec4(setPosition,"position")        Vec3 vec3;    ReadVec3(setDirection,"direction")        float value;    ReadFloat(setConstantAttenuation,"constant_attenuation")    ReadFloat(setLinearAttenuation,"linear_attenuation")    ReadFloat(setQuadraticAttenuation,"quadratic_attenuation")    ReadFloat(setSpotExponent,"spot_exponent")    ReadFloat(setSpotCutoff,"spot_cutoff")#undef ReadVec4#undef ReadVec3#undef ReadFloat    return iteratorAdvanced;}bool Light_writeLocalData(const Object& obj,Output& fw){    const Light& light = static_cast<const Light&>(obj);    fw.indent() << "light_num " << light.getLightNum() << std::endl;    // Vec4's    fw.indent() << "ambient " << light.getAmbient() << std::endl;    fw.indent() << "diffuse " << light.getDiffuse() << std::endl;    fw.indent() << "specular " << light.getSpecular() << std::endl;    fw.indent() << "position " << light.getPosition() << std::endl;    // Vec3's    fw.indent() << "direction " << light.getDirection() << std::endl;    // float's    fw.indent() << "constant_attenuation " << light.getConstantAttenuation() << std::endl;    fw.indent() << "linear_attenuation " << light.getLinearAttenuation () << std::endl;    fw.indent() << "quadratic_attenuation " << light.getQuadraticAttenuation() << std::endl;    fw.indent() << "spot_exponent " << light.getSpotExponent() << std::endl;    fw.indent() << "spot_cutoff " << light.getSpotCutoff() << std::endl;    return true;}

⌨️ 快捷键说明

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