Marmalde中使用Packed font的渲染的问题

近期由于需要让游戏支持中文,而游戏默认的实现是用bitmap font来实现字体,而中文常用字又很多,所以打算将NGUI中packed font的实现移植到游戏中,但是渲染时出现了问题,效果如下:

Marmalde中使用Packed font的渲染的问题_第1张图片

明显可以看到字中间的某些像素被抠掉了。

问题在于CIwTexture中有一个叫chromakey的东西,如果贴图中某些像素与这个chromakey相等,那么会被当做透明像素而抠掉。这让我想起了当年开发ds时,贴图调色板第一个颜色会被默认作为透明像素。

这里我们可以用CIwTexture的一个未公开的api来把这个特性关掉,幸好api是public的,不过即使是private的,我们可以也可以hack的方法去设置,无非就是把private #define为public,或者直接用char*来操作数据成员。

CIwTexture* tex = new CIwTexture();
tex->_SetFlags(CIwTexture::NO_CHROMA_KEY_F);

之后,packed font就可以被正常渲染了,效果如下

Marmalde中使用Packed font的渲染的问题_第2张图片

你可能感兴趣的:(游戏,GameDev,marmalade)