0
我無法在CCTMXTiledMap所配置的CCSprite上運行着色器。經過在互聯網上的大量研究,我開始認爲這可能是不可能的,但我沒有看到任何有關它的文檔或示例......有沒有人已經這樣做?如果有可能你能告訴我我做錯了什麼嗎?是否有可能從來自CCTMXTiledMap的CCsprite運行着色器(CCGLProgram)
這裏創建CCTMXTiledMap的代碼:(我沒有任何與它的問題,我CCTMXTiledMap的所有精靈都正常顯示)
CCTMXTiledMap *tileMap = [CCTMXTiledMap tiledMapWithTMXFile:@"FogTMX.tmx"];
[self addChild:tileMap z:2 tag:666];
這裏,我啓動着色器的代碼爲CCSprite:
CCTMXLayer *layer = [tileMap layerNamed:@"Layer 0"];
CCSprite *tile = [layer tileAt:ccp(10,10)];
const GLchar * fragmentSource = (GLchar*) [[NSString stringWithContentsOfFile:[[CCFileUtils sharedFileUtils] fullPathFromRelativePath:@"CSEAlpha.fsh"] encoding:NSUTF8StringEncoding error:nil] UTF8String];
tile.shaderProgram = [[CCGLProgram alloc] initWithVertexShaderByteArray:ccPositionTextureA8Color_vert fragmentShaderByteArray:fragmentSource];
[tile.shaderProgram addAttribute:kCCAttributeNamePosition index:kCCVertexAttrib_Position];
[tile.shaderProgram addAttribute:kCCAttributeNameTexCoord index:kCCVertexAttrib_TexCoords];
[tile.shaderProgram link];
[tile.shaderProgram updateUniforms];
[tile.shaderProgram use];
- 我沒有任何問題,改變CCSprite「平鋪」的特性(從CCTMXLayer來自例如用:
[tile setColor:ccc3(100,100,100)];
) - 我可以啓動着色器(CCGLProgram)與
CCSprite *normalSprite = [CCSprite spriteWithFile:@"Fog.png"];
- 創造了一個「正常的」雪碧我用cocos2d的V2.0.0和Cocos2d v2.1.rc2
感謝您的幫助試了一下。