Iphone 使用CCTextureCache设置粒子的纹理

Iphone 使用CCTextureCache设置粒子的纹理,iphone,cocos2d-iphone,particle-system,zwoptex,Iphone,Cocos2d Iphone,Particle System,Zwoptex,我将用cocos2diphone开始我的第一步 我正在使用: CCSpriteFrameCache *frameCache = [CCSpriteFrameCache sharedSpriteFrameCache]; [frameCache addSpriteFramesWithFile:@"textures.plist"]; 使用我的zwoptex文件。使用该设置,我将使用frameCache创建我的ccsprite,如下所示: [CCSprite spriteWithSpriteFrame

我将用
cocos2diphone
开始我的第一步

我正在使用:

CCSpriteFrameCache *frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
[frameCache addSpriteFramesWithFile:@"textures.plist"];
使用我的zwoptex文件。使用该设置,我将使用
frameCache
创建我的
ccsprite
,如下所示:

[CCSprite spriteWithSpriteFrameName:@"filename.png"];
到目前为止,一切顺利。现在我正在创建自己的粒子系统,我需要设置纹理。我猜读zwoptex是有意义的,但我找不到办法。 我还检查了这些示例,它们做了如下操作:

emitter.texture = [[CCTextureCache sharedTextureCache] addImage: @"fire.pvr"];
因此,我的问题是:

  • 如果我将拥有不止一个具有不同纹理的粒子系统。我应该用它们创建zwoptext吗?如果是,怎么做
  • 为什么示例会执行
    [[CCTextureCache sharedTextureCache]addImage:@“file”]?是因为没有加两次
编辑: 我刚刚把这个贴在了网上

如果我将拥有不止一个具有不同纹理的粒子系统。我应该用它们创建zwoptext吗?如果是,怎么做

纹理表可能会提高渲染性能,因为它不会更改OpenGL ES状态(绑定纹理)。请看一看“”。我强烈建议您使用创建纹理表

为什么示例执行[[CCTextureCache sharedTextureCache]addImage:@“文件”];?是因为没有加两次

它很容易用于加载OpenGL纹理。您不能使用OpenGL ES API,如glTexImage2D等。当然,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);
...

根据我的理解,pvr纹理并不是2D场景的最佳选择,你应该重新考虑一下代码感谢你指出TexturePacker,但我使用的是zwoptex。教程的链接没有提到如何从纹理表中获取纹理。很酷,谢谢。差不多了,但是
frameFire.texture
指的是大纹理,而不是“裁剪”的纹理。是的,因此速度很快。对纹理坐标使用火焰框属性,例如rectInpixels。更改纹理绑定的成本很高。