cocos2d 2.1和HKTMXLayer不透明度问题

时间:2013-04-02 12:58:03

标签: cocos2d-iphone

我正在用coco2d 2.1构建游戏,目前我开始使用HKTMXTiledMap扩展。

总的来说,扩展性非常好,任何使用平铺地图(特别是大型地图)制作游戏的人都应该检查一下。但是我需要能够在我的关卡过程中改变图层的不透明度。

我尝试更改着色器和绘图方法,但必须有一些我不知道的东西。

我将HKTMXLayer.m的第97行更改为:self.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTextureColor];,但随后该图层全部显示为黑色。

有人给我任何提示吗?谢谢!

2 个答案:

答案 0 :(得分:0)

不确定你的整体上下文,但是同一类的绘制方法(第465行)只是设置'position'属性:考虑到类派生自'CCNode',这是正常的。

您正在设置的着色器(通常用于精灵)需要顶点属性以及颜色属性。有关示例,请参阅CCSprite(draw)中的代码。也许还有另一种方法可以满足您的需求('为什么'您要将Node衍生类的着色器更改为通常用于CCSprite /纹理的着色器)。

答案 1 :(得分:0)

修复程序已发布here

在将着色器更改为kCCShader_PositionTextureColor的同时,绘制图层时需要传递颜色属性。

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glVertexAttrib4f(kCCVertexAttrib_Color, color_.r/255., color_.g/255., color_.b/255., opacity_/255.);

glVertexAttrib4f(kCCVertexAttrib_Color, color_.r/255., color_.g/255., color_.b/255., opacity_/255.);