IrrLicht引擎研究
鬼火引擎研究
假设我们要使某一24位色的Texture(不带Alpha)对应的特定颜色在render时透明,可以先调用makeColorKeyTexture创建一个 1 bit alpha channel of the texture,然后把MaterialType设为EMT_TRANSPARENT_ALPHA_CHANNEL就搞定了。废话不多说了, 请看代码:
 scene::IAnimatedMesh* meshRabbit = smgr->getMesh("../../media/mouse22.ms3d");
 scene::IAnimatedMeshSceneNode* anodeRabbit = smgr->addAnimatedMeshSceneNode(meshRabbit);
 if(anodeRabbit)
 {
  driver->setTextureCreationFlag(video::ETCF_ALWAYS_16_BIT ,true);
  irr::video::ITexture* pTexture = driver->getTexture("../../media/wenli.jpg");
  driver->makeColorKeyTexture(pTexture,  core::position2d< s32 >(300,30));
 
  anodeRabbit->setMaterialTexture(0, pTexture);
  anodeRabbit->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL  );
  anodeRabbit->setPosition(core::vector3df(70,20,-60));
  anodeRabbit->setMaterialFlag(video::EMF_LIGHTING, false);
  anodeRabbit->setRotation(core::vector3df(0,180.0f,0));
  anodeRabbit->setAnimationSpeed(25*30);
 }

当然如果Texture本身就带alpha channel的话就不需要再makeColorKeyTexture了,另外还有两种模式可以尝试: EMT_TRANSPARENT_ADD_COLOR 和  EMT_TRANSPARENT_ALPHA_CHANNEL_REF。
 
 
posted on 2006-07-23 20:59  安徽飞雪游戏工作室  阅读(621)  评论(0编辑  收藏  举报