2011-04-14 6 views
3

나는 첫 번째 단계를 cocos2d-iphone과 함께 제공하고 있습니다.CCTextureCache를 사용하여 입자 텍스처 설정

내가 사용하고 있습니다 :

CCSpriteFrameCache *frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
[frameCache addSpriteFramesWithFile:@"textures.plist"]; 

내 zwoptex 파일을 사용할 수 있습니다. 그 설정으로,이 같은 frameCache를 사용하여 내 CCSprites를 만드는 오전 :

[CCSprite spriteWithSpriteFrameName:@"filename.png"]; 

를 지금까지 너무 좋아. 이제는 내 자신의 입자 시스템을 만들고 있는데 텍스처를 설정해야합니다. 나는 을 추측한다. 그것은 zwoptex에서 읽는 것이 이치에 맞을 것이다. 그러나 나는 그것을 할 길을 찾을 수 없다. 나는 또한 예제를 확인하고 그들이 같은 것을 할 : 나는 다른 텍스처와 파티클 시스템보다 더해야 할 것입니다 경우

  • :
    emitter.texture = [[CCTextureCache sharedTextureCache] addImage: @"fire.pvr"]; 
    

    그래서 내 질문이 있습니다. 그들과 함께 zwoptext를 생성해야합니까? 그렇다면 어떻게?
  • 예가 왜 [[CCTextureCache sharedTextureCache] addImage: @"file"];입니까? 그것은 두 번 추가되지 않았기 때문입니다.

편집 : 방금 ​​cocos2d's forum에 게시했습니다.

+0

, PVR 텍스처가 2D 상황에 최적이 아닌, 당신은 – arclight

답변

6

다른 텍스처를 가진 파티클 시스템 이상을 사용할 계획이라면 어떻게해야합니까? 그들과 함께 zwoptext를 생성해야합니까? 그렇다면 어떻게?

텍스처 시트는 OpenGL ES 상태 (바인딩 텍스처)를 변경하지 않기 때문에 렌더링 성능을 향상시킬 수 있습니다. "How to Create and Optimize Sprite Sheets in Cocos2D with Texture Packer and Pixel Formats"을보십시오. 텍스처 시트를 만들려면 TexturePacker을 사용하는 것이 좋습니다.

[[CCTextureCache sharedTextureCache] addImage : @ "file"]; 그것은 두 번 추가되지 않았기 때문입니다.

OpenGL 텍스처를로드하는 데 사용하기 쉽습니다. glTexImage2D 등의 OpenGL ES API를 사용하면 안됩니다. 또한 CCTextureCache는 항상 텍스처를 캐시합니다. 지정된 파일이 이미 캐시 된 경우 즉시 CCTexture2D 인스턴스를 반환합니다.

편집 :

당신은 zwoptext의 PLIST에 CCSpriteFrameCache에서 CCTexture2D 인스턴스를 얻을 수 있습니다.

나의 이해에서
CCSpriteFrameCache *frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; 
[frameCache addSpriteFramesWithFile:@"textures.plist"]; 

CCSpriteFrame *frameFire = [frameCache spriteFrameByName:@"particle_fire"]; 
CCTexture2D *texFire = frameFire.texture; 
... 
glBindTexture(GL_TEXTURE_2D, texFire.name); 
/* You may need to use frameFire.rectInPixels and frameFire.rotated for the texture coordinates. */ 
... 

CCSpriteFrame *frameWater = [frameCache spriteFrameByName:@"particle_water"]; 
CCTexture2D *texWater = frameWater.texture; 
... 
glBindTexture(GL_TEXTURE_2D, texWater.name); 
... 
+0

감사 TexturePacker을 지적하는 코드의 비트를 다시 생각한다,하지만 난 zwoptex을 사용하고 있습니다. 이 자습서와의 링크는 텍스처 시트에서 텍스처를 얻는 방법을 언급하지 않습니다. – Macarse

+0

그래, 내 대답을 업데이 트했습니다. –

+0

쿨, 고마워. 거의 거기 있지만'frameFire.texture'는 "잘린"텍스처 대신 큰 텍스처를 참조합니다. – Macarse