2013-06-11 59 views
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

感謝您的幫助試了一下。

回答

0

「CCTMXLayer使用CCSpriteBatchNode它的渲染,你可以改變這個節點的着色器然而,因爲它們使用相同的紋理也將適用於所有的瓷磚。

我不認爲目前是功能當CCSpriteBatchNode的一部分時,修改每個CCSprite基礎上的着色器。「

由於cocojoe來自:http://www.cocos2d-iphone.org

相關問題