Mac*_*rse 3 iphone cocos2d-iphone particle-system zwoptex
我正在迈出第一步cocos2d-iphone.
我在用:
CCSpriteFrameCache *frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
[frameCache addSpriteFramesWithFile:@"textures.plist"];
Run Code Online (Sandbox Code Playgroud)
使用我的zwoptex文件.有了这个集合,我正在CCSprites使用frameCache这样的创建:
[CCSprite spriteWithSpriteFrameName:@"filename.png"];
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在我正在创建自己的粒子系统,我需要设置纹理.我想从zwoptex读取是有意义的,但我找不到办法做到这一点.我还检查了示例,他们做了类似的事情:
emitter.texture = [[CCTextureCache sharedTextureCache] addImage: @"fire.pvr"];
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
[[CCTextureCache sharedTextureCache] addImage: @"file"];呢?这是因为它没有被添加两次?编辑:我刚刚在cocos2d的论坛上发布了这个.
如果我要拥有的不仅仅是具有不同纹理的粒子系统.我应该用它们创建一个zwoptext吗?如果是这样,怎么样?
纹理表可能会提高渲染性能,因为它不会改变OpenGL ES状态(绑定纹理).请查看" 如何使用Texture Packer和Pixel格式在Cocos2D中创建和优化Sprite表 ".我强烈建议您使用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);
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2650 次 |
| 最近记录: |