ogre overlay 添加2d图片

时间:2022-12-04 19:01:43

 

收集的ogre 技巧

 

如何设置透明

在.material文件里,你可以设置 scene_blend 为 addmodulate 或 alpha_blend

scene_blend add

你可以使用JPEG 或 PNG文件为纹理
图象全黑的地方为纯透明
在爆炸,光晕,灯光等方面使用
全白的地方是

scene_blend modulate

你可以使用JPEG或PNG文件为纹理, 纹理会根据背景进行想乘,通常它的颜色比图片
要暗. 纹理黑的部分为透明.

s
ene_blend alpha_blend  

你可以使用PNG图象文件为纹理,要在PNG文件里设置透明,你需要用Photoshop来处理它
通过把背景层删除,并 在其他层使用橡皮擦.
被擦掉的地方为透明

投射阴影

一个实体可以投射影子,默认的,光不能投射阴影.
这里有4种阴影渲染的技术 TENCIL or TEXTURE, and ADDITIVE or MODULATIVE.
(CPU最适合是的SHADOWTYPE_TEXTURE_MODULATIVE)

STENCIL SHADOWS (模板阴影):  

这个技术使用CPU来渲染
你可以设置最大距离(调用setShadowFarDistance),来维持一个好的
帧率

投影的网格要是完全的(封闭和无洞).

避免过长的影子
避免对象距离光太近
这个技术允许自投影
这个影子有硬边(在影子和光之间进行硬转化)

TEXTURE SHADOWS (纹理阴影):  

这个技术使用显卡进行渲染
这个技术只在方向光和聚光等下工作
这个技术不允许自投影
meshes 要定义 shadow caster 和 shadows receiver
避免过长的影子
避免对象距离光太近
影子有一个柔和的边缘
影子的颜色和精确度可以进行定义

例子:

    mSceneMgr->setShadowsTechnique(SHADOWTYPE_TEXTURE_MODULATIVE);
mSceneMgr->setShadowColour( ColourValue(0.5, 0.5, 0.5) );
...
mLight->setCastShadows(true);
...
mCastingObject->setCastShadows(true);
mReceivingObject->setCastShadows(false);
...
myMaterial->setReceiveShadows(true);
...

注释: myMaterial->setReceiveShadows(true)指令可以替代在material文件里的receive_shadows on
在材质的默认设置里是ON, 你可以在在材质里设置为 OFF来不让他接收阴影,这样可以节省一些
帧率

设置Overlay

//加载2d图片
OverlayElement* mpicture = OverlayManager::getSingleton().createOverlayElement("Panel","Overlay/Picture");
mpicture->setParameter("metrics_mode","pixels");
mpicture->setParameter("left","0");
mpicture->setParameter("top","0");
mpicture->setParameter("width","400");
mpicture->setParameter("height","250");
mpicture->setMaterialName("Examples/OgreLogo");

Overlay* mOverlay = OverlayManager::getSingleton().create("Overlay");
mOverlay->add2D((OverlayContainer*)mpicture);
mOverlay->show();