閱讀977 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Ogre:StaticObject和projective mapping、

在場景中,通常所有物體都是被放在場景節點上的,每次渲染時都會根據物體的移動來更新維護場景樹,這樣是花費極大的效率的,所以,如果某些物體不必移動,那麼可以不把他放在場景樹上,這就是StaticObject,將你不必移動物體(如很多山、樹)等做成靜態物體,會大大提高效率,使用方法很簡單:

首先用場景管理器創建一個靜態物體

StaticGeometry* sg=smgr->createStaticGeometry("static ge");

然後在這個靜態物體裏放入你的entity,可以放很多

sg->addEntity(ent_l,Ogre::Vector3(0,0,0));

最後要調用

sg->build()就可以了

Frustum* fru=new Frustum();
SceneNode* frunode=smgr->getRootSceneNode()->createChildSceneNode("fru node");
frunode->attachObject(fru);
frunode->setPosition(0,0,500);

2、設置接受物體的材質,使他接受這個投射紋理並與其表麵紋理混合

 
       Pass* pass=mat->getTechnique(0)->createPass();//創建一個新通道
       pass->setSceneBlending(SBT_TRANSPARENT_ALPHA);//設置於上個通道的alpha混合
       pass->setLightingEnabled(false);


       TextureUnitState *texState = pass->createTextureUnitState("decal.png");//在這個通道設置一個紋理
       texState->setProjectiveTexturing(true, fru);//設置這個紋理為fru的投射紋理
       texState->setTextureAddressingMode(TextureUnitState::TAM_CLAMP);
       texState->setTextureFiltering(FO_POINT, FO_LINEAR, FO_NONE);//這個設置很重要

最後更新:2017-04-02 06:51:23

  上一篇:go C# 遍曆枚舉
  下一篇:go Nested Class