掩盖从纹理地图集的精灵

时间:2012-10-23 13:34:59

标签: cocos2d-iphone opengl-es-2.0 shader

我需要掩饰一个精灵。我遵循了本教程:http://www.raywenderlich.com/4428/how-to-mask-a-sprite-with-cocos2d-2-0,但问题是当我创建精灵不是来自单个png文件,而是来自sprite表的“initWithSpriteFrameName”方法。

掩码文件正在应用于大精灵表的纹理,而不是小精灵的纹理。

任何线索如何解决这个问题?

干杯, 马尔钦

1 个答案:

答案 0 :(得分:2)

这里的问题是你的精灵和你的面具正在使用相同的tex坐标。

你需要在每个顶点发送两个更多的UV坐标,这些坐标适合你的蒙版图谱。

为这些遮罩坐标创建另一个变化的v_maskTexCoord,然后执行此操作:

vec4 texColor = texture2D(u_texture, v_texCoord);
vec4 maskColor = texture2D(u_mask, v_texCoord);

将其更改为

vec4 texColor = texture2D(u_texture, v_texCoord);
vec4 maskColor = texture2D(u_mask, v_maskTexCoord);