4

Kobold2Dを使用していて、バージョン2.0.3からバージョン2.1.0にアップグレードしました(これは、cocos2d-iphonev2.0からcocos2d-iphonev2.1に移行したことを意味します)。

アップグレードする前は、私のプロジェクトは実行されていて、iPhone5で見栄えがしていました。

アップグレード後、iPhoneでプロジェクトを実行すると、これらの神秘的でちらつき、きらめく、角張ったアーティファクトが現れました。それらはかなり普及していますが、興味深いことに、シミュレーターでプロジェクトを実行すると、そのようなアーティファクトは発生しません。

アーティファクトと、cocosCCParticleSystemアニメーションオブジェクトの使用には相関関係があるようです。言い換えると、アーティファクトはパーティクルアニメーションの期間中は存在しているように見え、パーティクルアニメーションの「寿命」が完了すると消えるように見えます。

これがスクリーンショットです。この場合、アーティファクトは青い「くさび」として表示されますが、多くの動きを変え、他の色や形をとることもあります。

これらの迷惑なアーティファクトを排除するために私ができることを誰かが知っていますか?

スクリーンショット

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 に答える