游戏很多地方需要3D人物进行帮派区分,
比如同是兽人,A玩家兽人穿的衣服是红色主题,B玩家是蓝色主题的。
我的想法如下:
每个模型原贴图之外,相应的设置一个灰度图:
然后进行代码如下:
Image* skin = new Image();
skin->initWithImageFile("monguger.tga");//这是原纹理
Image* huidu = new Image();
huidu->initWithImageFile("huidu.png");//这是灰度纹理
unsigned char *pData = skin->getData();
unsigned char *pHuiduData = huidu->getData();
int iIndex = 0;
for (int i = 0; i < skin->getHeight(); i++)
{
for (int j = 0; j < skin->getWidth(); j++)
{
int iBPos = iIndex;
unsigned int iB = pData;
iIndex++;
unsigned int iG = pData;
iIndex++;
unsigned int iR = pData;
iIndex++;
iIndex++;
//如果灰度图颜色不是0,0,0,则把原图设置为灰度图的颜色
if (pHuiduData != 0 && pHuiduData != 0 && pHuiduData != 0 )
{
pData = pHuiduData;
pData = pHuiduData;
pData = pHuiduData;
}
}
}
Texture2D *tex = new Texture2D();
tex->initWithImage(skin);
monster->setTexture(tex);
```
有木有别的方法更省内存,和CUP的????求厉害的人指点
