使用和不使用spritesheet的Cocos2d-x 3.x渲染

时间:2015-08-18 20:29:19

标签: opengl opengl-es cocos2d-x cocos2d-x-3.0 alphablending

我正在从屏幕上的spritesheet渲染一朵花,所有看起来都很好。当我使用相同的纹理但不使用spritesheet时,花的呈现方式不同。

从spritesheet渲染的花朵的这个图像(第一个,下面),看起来正确。它由两个纹理层组成:花瓣和中心。

image of flower rendered correctly

这张图片(下图)由两个精灵组成,一个抱着花瓣纹理,另一个抱着中心纹理,不是来自spritesheet。正如你所看到的,中心周围有透明度,这是由(我假设)将中心纹理混合到花瓣纹理上引起的。

image of flower rendered incorrectly

花瓣和中心纹理由使用CCRenderTexture从文件读取的原始图像组成。原始图像是PMA(预乘-α),而来自CCRenderTexture的结果纹理是NPMA(非预乘-α)。

将混合模式更改为PMA或NPMA无济于事。

精灵节点层次结构很简单:

ROOT-SPRITE (empty image, ie 1x1px size, fully tranparent image)
  PETALS-SPRITE (petals texture), z=1
  CENTER-SPRITE (center texture), z=2

我有以下问题:

我做错了什么? 我该如何解决这个问题?

在iOS模拟器中使用Cocos2D-X v3.4(设备具有相同的结果)。

0 个答案:

没有答案