我使用的是Kobold2D,我刚从版本2.0.3升级到版本2.1.0(这意味着我已经从cocos2d-iphone v2.0升级到cocos2d-iphone v2.1)。
在升级之前,我的项目正在运行,并且在iPhone 5上看起来很棒。
升级后,当我在iPhone上运行项目时,出现了这些神秘,闪烁,闪烁,角度的伪影。它们非常普遍,但有趣的是,当我在模拟器中运行项目时,不会出现这样的伪影。
似乎与工件和我对cocos CCParticleSystem动画对象的使用存在关联。换句话说,人工制品似乎在粒子动画的持续时间内存在,并且在粒子动画的“寿命”完成后似乎消失了。
这是截图。在这种情况下,工件显示为蓝色“楔形”,但它们会移动很多,有时会采用其他颜色和形状。
有人知道我能做些什么来消除这些讨厌的文物吗?
答案 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();
}