2012-08-24 64 views
1

我的精靈的alpha通道(有時)掩蓋其他精靈。Alpha通道在iOS上爲Cocos2d屏蔽掉其他精靈

這是什麼樣子: screenshot

正如你所看到的,它不會發生所有的時間,所有的化身這裏使用相同的紋理文件。 有沒有人有過這個問題?

順便說一句,我使用TexturePacker導出精靈。另外我使用cocos2d的2.0,這是我如何初始化:

CCGLView *glView = [CCGLView viewWithFrame:[window_ bounds] pixelFormat:kEAGLColorFormatRGBA8 depthFormat:GL_DEPTH_COMPONENT24_OES preserveBackbuffer:NO sharegroup:nil multiSampling:NO numberOfSamples:0]; 
[director_ setProjection:kCCDirectorProjection2D]; 
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA4444]; 
[CCTexture2D PVRImagesHavePremultipliedAlpha:YES]; 

回答

0

嘗試了很多不同的事情後,我發現,是什麼使得它的工作是簡單地設置節點上的着色器程序:

node.shaderProgram = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTextureColorAlphaTest];

+0

你能解釋一下你的解決方案?我需要使用另一個精靈(從屬)屏蔽精靈(主人)。我測試這個,但導致運行時斷言。 myMasterSprite-> setShaderProgram(CCShaderCache :: sharedShaderCache() - > programForKey(「kCCShader_PositionTextureColorAlphaTest」)); – Emadpres

0

試試你CCTexture2DPiexelFormat設置爲更高的規格,當你加載這個作爲測試:

[CCTexture2D setDefaultAlphaPixelFormat:kTexture2DPixelFormat_RGB5A1]; 

看看是否有幫助?我記得,RGBA4444的位深度要低得多,但當然會提供更好的性能。