2013-03-10 2 views
4

Я использую Kobold2D, и я просто обновился с версии 2.0.3 до версии 2.1.0 (это означает, что я перешел от cocos2d-iphone v2.0 к cocos2d-iphone v2.1) ,Sprite Мерцающие артефакты После обновления версии cocos2d

Перед тем как обновить мой проект был запущен и выглядит превосходно на моем iPhone 5.

После обновления эти таинственные, мерцающий, мерцающий, угловые артефакты появились, когда я запускаю проект на iPhone. Они довольно распространены, но интересно, когда я запускаю проект в симуляторе, таких артефактов не происходит.

Кажется, что есть корреляция с артефактами и мое использование объектов анимации CCParticleSystem. Другими словами, артефакты, кажется, присутствуют на протяжении анимации частиц и, кажется, исчезают после завершения «продолжительности жизни» анимации частиц.

Вот скриншот. В этом случае артефакты выглядят как синие «клинья», но они много перемещаются и иногда приобретают другие цвета и формы.

Кто-нибудь знает, что я могу сделать, чтобы устранить эти неприятные артефакты?

Screenshot

ответ

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(); 
} 
+0

работал отлично. Это специально метод postStep (есть небольшая опечатка выше), и на самом деле это был вариант № 2, который мне нужно было прокомментировать, а не вариант №1. Но спасибо, я никогда бы не стал там смотреть! – robbpriestley