cocos2d版本升级后的精灵闪烁文物

时间:2013-03-10 20:36:38

标签: iphone cocos2d-iphone kobold2d ccparticlesystem

我使用的是Kobold2D,我刚从版本2.0.3升级到版本2.1.0(这意味着我已经从cocos2d-iphone v2.0升级到cocos2d-iphone v2.1)。

在升级之前,我的项目正在运行,并且在iPhone 5上看起来很棒。

升级后,当我在iPhone上运行项目时,出现了这些神秘,闪烁,闪烁,角度的伪影。它们非常普遍,但有趣的是,当我在模拟器中运行项目时,不会出现这样的伪影。

似乎与工件和我对cocos CCParticleSystem动画对象的使用存在关联。换句话说,人工制品似乎在粒子动画的持续时间内存在,并且在粒子动画的“寿命”完成后似乎消失了。

这是截图。在这种情况下,工件显示为蓝色“楔形”,但它们会移动很多,有时会采用其他颜色和形状。

有人知道我能做些什么来消除这些讨厌的文物吗?

Screenshot

1 个答案:

答案 0 :(得分:4)

是一个已知的错误: 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();
}