OGRE Demo_EnvMapping

138 篇文章 0 订阅

截图:



参考对比下纯D3D的实现:《精通DirectX 3D》第十二章 高级纹理应用 06_SphericalEnvMapping 
    原理都是一样的,都是有个环境贴图,假的环境映射!


实现很简单,override createScene成员函数就可以了

     //  Just override the mandatory create scene method
     void  createScene( void )
    {
        
//  Set ambient light
        mSceneMgr -> setAmbientLight(ColourValue( 0.5 0.5 0.5 ));

        
//  Create a point light
        Light *  l  =  mSceneMgr -> createLight( " MainLight " );
        
//  Accept default settings: point light, white diffuse, just set position
        
//  NB I could attach the light to a SceneNode if I wanted it to move automatically with
        
//   other objects, but I don't
        l -> setPosition( 20 , 80 , 50 );

        Entity 
* ent  =  mSceneMgr -> createEntity( " head " " ogrehead.mesh " );

        
//  Set material loaded from Example.material
        ent -> setMaterialName( " Examples/EnvMappedRustySteel " );

        
//  Add entity to the root scene node
        mSceneMgr -> getRootSceneNode() -> createChildSceneNode() -> attachObject(ent);  
    }


对应的材质脚本在
ogrenew/Samples/Media/materials/scripts/Example.material 
里,如下:

material Examples / EnvMappedRustySteel
{
    technique
    {
        pass
        {

            texture_unit
            {
                texture RustySteel.jpg
            }

            texture_unit
            {
                texture spheremap.png
                colour_op_ex add src_texture src_current
                colour_op_multipass_fallback one one
                env_map spherical // hew:这里指明环境映射的类型是球形环境映射
            }
        }
    }
}


ogrenew/Samples/Media/materials/textures/spheremap.png 



ogrenew/Samples/Media/materials/textures/RustySteel.jpg 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值