2013-03-10 22 views
4

我使用Kobold2D,并且我刚刚从版本2.0.3升级到版本2.1.0(这意味着我已经从cocos2d-iphone v2.0升级到cocos2d-iphone v2.1) 。cocos2d版本升级后的Sprite闪烁文物

的升级我的项目运行,并在我的iPhone寻找伟大5.

在升级后之前这些神秘的,闪烁,波光粼粼,棱角分明的器物当我运行在iPhone上的项目出现。它们非常普遍,但有趣的是,当我在模拟器中运行该项目时,不会出现这种工件。

这似乎与artifacts和我使用cocos CCParticleSystem动画对象有关。换句话说,人造物似乎在粒子动画的持续时间内存在,并且在粒子动画的“寿命”完成后似乎消失。

下面是截图。在这种情况下,伪像显示为蓝色的“楔形”,但是它们转移很多,有时会呈现其他颜色和形状。

有没有人知道我能做些什么来消除这些恼人的文物?

Screenshot

回答

4

是一个已知的bug: http://www.cocos2d-iphone.org/forum/topic/208630?replies=6#post-376569

修复(或补丁:),修改CCParticleSystemQuad.m。 在postSetp方法注释选项1并取消选项3

这为我工作和DropDKeith(用户论坛的cocos2d)

-(void) postStep 
{ 
    glBindBuffer(GL_ARRAY_BUFFER, _buffersVBO[0]); 

    // Option 1: Sub Data 
// glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(_quads[0])*_particleCount, _quads); 

    // Option 2: Data 
// glBufferData(GL_ARRAY_BUFFER, sizeof(_quads[0]) * _particleCount, _quads, GL_DYNAMIC_DRAW); 

    // Option 3: Orphaning + glMapBuffer 
    glBufferData(GL_ARRAY_BUFFER, sizeof(_quads[0])*_totalParticles, nil, GL_STREAM_DRAW); 
    void *buf = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); 
    memcpy(buf, _quads, sizeof(_quads[0])*_particleCount); 
    glUnmapBuffer(GL_ARRAY_BUFFER); 

    glBindBuffer(GL_ARRAY_BUFFER, 0); 

    CHECK_GL_ERROR_DEBUG(); 
} 
+0

完美。它特别是“postStep”方法(上面有一个小错字),它实际上是我需要注释掉的选项#2,而不是选项#1。但是,谢谢,我从来不知道要去那里看看! – robbpriestley 2013-03-11 14:05:52