zoukankan      html  css  js  c++  java
  • [原创]Irrlicht中的Texture透明色(colorkey)

    假设我们要使某一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。
     
     
  • 相关阅读:
    iframeUpload
    获取当前文件路径。
    ie6 overflow 失效
    ie8 vml不显示
    json转换
    nodejs for windows
    模块化管理组件(2012/05/09)
    模块化管理组件v0.1
    Firefox和IE之间7个JavaScript的差异
    c输入函数细节
  • 原文地址:https://www.cnblogs.com/flysnow/p/457828.html
Copyright © 2011-2022 走看看