[原创]Irrlicht中的Texture透明色(colorkey)

本文介绍如何通过创建带有1比特Alpha通道的纹理并设置材质类型为EMT_TRANSPARENT_ALPHA_CHANNEL来实现24位色纹理中特定颜色的透明效果。此外还提及了当纹理自带Alpha通道时的处理方式及其它两种透明模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设我们要使某一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。
 
4a21acc4020006eh
 

转载于:https://www.cnblogs.com/flysnow/archive/2006/07/23/457828.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值