我正在用cocos2d-iphone做我的第一步。
我正在使用:
CCSpriteFrameCache *frameCache = [CCSpriteFrameCache sharedSpriteFrameCache];
[frameCache addSpriteFramesWithFile:@"textures.plist"];使用我的zwoptex文件。使用该设置,我将使用如下所示的CCSprites创建我的frameCache:
[CCSprite spriteWithSpriteFrameName:@"filename.png"];到现在为止还好。现在我正在创建我自己的粒子系统,我需要设置纹理。我想,,,从zwoptex中阅读是有意义的,但是我找不到方法去做。我还检查了这些例子,它们做的事情如下:
emitter.texture = [[CCTextureCache sharedTextureCache] addImage: @"fire.pvr"];所以我的问题是:
[[CCTextureCache sharedTextureCache] addImage: @"file"];?是因为它没有加两次?编辑:我刚刚在Cocos2d论坛上发布了这个。
发布于 2011-04-14 21:54:00
如果我要有一个有不同纹理的粒子系统的话。我应该用它们创建一个zwoptext吗?如果是这样的话,是怎么做的?
纹理工作表可能会提高渲染性能,因为它不会改变OpenGL ES状态(绑定纹理)。请看一下"如何用纹理封隔器和像素格式在Cocos2D中创建和优化雪碧片“。我强烈建议您使用TexturePacker创建纹理页。
为什么示例要做[CCTextureCache sharedTextureCache addImage:@"file"];?是因为它没有加两次?
这是易于使用的加载OpenGL纹理。您不能使用OpenGL、ES (例如glTexImage2D等)。当然,CCTextureCache也总是缓存纹理。如果指定的文件已经被缓存,它将立即返回CCTexture2D实例。
编辑:
您可以使用zwoptext从CCTexture2D中获取CCSpriteFrameCache实例。
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);
...https://stackoverflow.com/questions/5669850
复制相似问题