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