4

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

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

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

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

这是一个屏幕截图。在这种情况下,伪影显示为蓝色的“楔形”,但它们会四处移动,有时会呈现其他颜色和形状。

有人知道我能做些什么来消除这些烦人的伪影吗?

截屏

4

1 回答 1

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();
}
于 2013-03-11T12:58:10.320 回答