2

私は JavaScript キャンバス ゲームに取り組んでおり、ゲームのパフォーマンスを改善したいと考えています。パフォーマンスを向上させる方法についての記事をいくつか読んでいます.1つの手法は事前レンダリングです。

それぞれがテクスチャを持つすべてのオブジェクトを、独自の個別のキャンバス要素にレンダリングすることは理にかなっていますか? 私がレンダリングしているエンティティの例を次に示します。

    fruitless.ctx.save();
        fruitless.ctx.translate(this.body.GetPosition().x,this.body.GetPosition().y);
        fruitless.ctx.rotate(this.body.GetAngle());
        fruitless.ctx.scale(this.scale.x, this.scale.y);

        fruitless.ctx.drawImage(this.texture, ... )
        this.face.draw();
    fruitless.ctx.restore();

したがって、基本的に、反復ごとに drawImage() 関数を実行しています...事前レンダリングは、この drawImage() を初期化で(1回だけ)実行する必要があることを示唆しています-そうですか?

4

2 に答える 2

0

この質問に答えるには:

それぞれがテクスチャを持つすべてのオブジェクトを、独自の個別のキャンバス要素にレンダリングすることは理にかなっていますか? 私がレンダリングしているエンティティの例を次に示します。

まあ、それは依存します。いくつありますか?そして彼らは何をしていますか?

それらがすべて常にぐるぐる回っている場合は、それらすべてを同じキャンバス要素に保持することもできます。関係なく、これは一貫して更新されます。

一部が静的な場合は、それらをグループ化します。

drawImageこれはかなりコストがかかるため、できるだけ少ない呼び出しを行うことが目標です。

また、大まかに言えば、マイクロ最適化を最後まで残すことをお勧めします。

于 2013-05-20T03:47:49.553 に答える