I'm making a game in cocos2d that uses "old-school" style graphics, and I don't want the sprites to be antialiased in any way. I can use [[sprite texture] setAliasTexParameters]
to disable th开发者_如何学JAVAe antialiasing, but I need to do that for every sprite, and it clutters the code. Is there any way to do it globally by default?
You can edit CCTexture2D
code to setAliasTexParameters
by default, but that will mean updates to cocos2d will be a headache really fast.
What I done when I needed this, I wrote a function to create the textures for me and it called setAliasTexParameters
on each.
CCTexture2D.m
- (id) initWithData:(const void*)data pixelFormat:(CCTexture2DPixelFormat)pixelFormat pixelsWide:(NSUInteger)width pixelsHigh:(NSUInteger)height contentSize:(CGSize)size
{
if((self = [super init])) {
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glGenTextures(1, &name_);
glBindTexture(GL_TEXTURE_2D, name_);
[self setAliasTexParameters];
You may be able to get the same effect by reducing the pixel format.
[CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGBA4444];
If not, you could create a factory that sets the setAliasTexParameters as the texture object is instantiated reducing the code clutter.
精彩评论