AS3 用の Box2d を使用して小さなゲームを作成しました。基盤となる 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();
}
興味深いことに、デバッグ描画スケールを自分のワールド スケールとは異なるものに設定すると、19fps まで遅くなります。そのため、スプライトの下にボックスを描画すると何かが発生し、実行が速くなります..
乾杯、
男