При рисовании отладочных данных Box2D во Flash работает быстрее, чем нет - PullRequest
1 голос
/ 24 января 2010

Я создал небольшую игру с Box2d для AS3 - у меня есть спрайты, прикрепленные к сцене, которые занимают свою позицию в основном мире Box2d. Эти спрайты в основном PNG.

Когда игра запускается с использованием метода DrawDebugData (), вызываемого при каждом обновлении, она работает хорошо и без сбоев. Однако, когда я это комментирую, он работает прерывисто. В обоих случаях все мои спрайты отображаются. Так что кажется, что он работает быстрее, когда рисует отладочные данные дополнительно (т.е. мои спрайты на экране в обоих случаях!)

Что происходит? Рисует ли отладочные данные каким-то образом переключателем «сделать быстро»? Если так, то что за переключатель !? Я не вижу этого в коде Box2D.

function Update(e){
    m_world.Step(m_timeStep, m_velocityIterations, m_positionIterations);
    // draw debug?
    m_world.DrawDebugData();
    // with the above line in, I get 27fps, without it, I get 19fps.
    // that's the only change that's causing such a huge difference.
    doStuff();
}

Интересно, что если я установлю масштаб отладочной отрисовки на что-то другое, чем мой мировой масштаб, он замедлится до 19 кадров в секунду. Так что что-то происходит, когда он рисует коробки под моими спрайтами, заставляя его работать быстрее ..

Приветствия

Guy

Ответы [ 2 ]

0 голосов
/ 01 мая 2010

У меня были такие же проблемы при тестировании box2d в прошлом году. Я установил альфа-заполнение и набросал альфа-0 на отладочную отрисовку: D или вы можете удалить флаги, чтобы они не отлаживали соединения и т. Д.

это просто обходной путь. Я сейчас посмотрю в box2d. Если я найду решение для достижения той же производительности без отладки, я скажу вам.

Я использую box2d 2.1a, кстати.

0 голосов
/ 24 января 2010
private var gravity:b2Vec2 = new b2Vec2(0, 7.8);
private var doSleep:Boolean = false;
private var iterations:int = 10;
private var timeStep:Number = 1/30;

Вы можете поделиться этими настройками с нами? doSleep значительно повышает производительность

...