2017-06-04 8 views
0

私はTexture Packerを使用して、すべてのゲーム画像リソース用のスプライトシートを作成しています。私は2048x2048の最大5シートのマルチパックを使用して終了します。私は様々なコンテナ、スプライト、ティリングスプライトなどに読み込まれるスプライトの量を増やしています。これらのスプライトシートは、どのコンテナにロードされるかに基づいてよりインテリジェントに作成する必要がありますか?PIXI.JSのスプライトシートから画像を読み込むとき、スプライトシートの順序や量が重要ですか?

パフォーマンスが最高ではないように私は根本的に間違っているように感じます。私は問題の根本的な原因に到達しようとするために、6つのスプライトだけをロードするように私のゲームを取り除いた。スプライトシートを個々のコンテナに分割することさえできます。コンテナ 'A'はスプライトシート 'A'の画像を使用し、コンテナ 'B'はスプライトシート 'B'の画像を使用します。

これらの非常に小さいグラフィックスがロードされているにもかかわらず、CPU使用量が急増し、コンピュータファンが激しくなります。それはちょうど6つのスプライトを表示するためにコンピュータが非常に難しく働いているようです。私はpixijsのウェブサイトからデモや例を試してみると気付かない。

私が間違っていることは本当にわかりません。画像が大きすぎますか?私は約1440x900ピクセルのいくつかを持っています。画像はすべて圧縮されるので、サイズは大きすぎませんが、サイズの大きなスプライトでは処理が遅くなります。私はいくつかのコードを表示するだろうが、私のコードベースはかなり大きいです。私はキャンバスとwebglでこれを試しました。 Webglのパフォーマンスは良くなりますが、私は両方のCPUのスパイクが同じになります。

+0

はい、いいえ?問題が何か、画像が大きくなる、CPUが遅すぎる、GPUが遅い、リソースが少ない、コードが悪い、ブラウザが不良な場合、または多くのもののいずれか1つ以上を選択してください。なぜあなたのコードが苦労しているのかを知りたい場合は、いくつかのコードを提供する必要があります。パーソナル私は悪いイベントの処理やインスタンシエーション、またはキャンバスにレンダリングするときにオープンパスを残していると思われますが、通常はデバイスのファンが動くようになります。 – Blindman67

答えて

1

webGLでは、グラフィックスの表示はGPUの責任です。したがって、CPUが窒息している場合、webGLを使用する際には、問題はコード内であり、スプライトサイズではないことがわかります。基本的にwebGLには表示できるテクスチャの制限があります:https://www.khronos.org/registry/webgl/sdk/tests/conformance/limits/gl-max-texture-dimensions.htmlhttps://webglstats.com/webgl/parameter/MAX_TEXTURE_SIZE

webGLでは、最適なCPUは、スプライトの位置を変更して新しい位置をGPUに送信した後、各アニメーション・サイクルでGPUはスプライトを再描画します。しかし、あなたのコードベースは大きいと言いました。だから、それを個人的にはコアの問題として疑うでしょう。

コードのどの部分がスパイクを引き起こしているかを知る必要があります。たとえば、 chrome devtoolsをプロファイリングし、そこから続行します。

+0

私のgameLoopではrenderer.render()を継続的に呼び出していました。これは次にすべての子オブジェクトに行き、レンダリングが必要な場合はレンダリングメソッドを呼び出しました。 pixiは独自のベースレンダリングをしていますか?私のゲームのループでrenderer.render()を何度も呼び出すことで、本質的にループごとに2回レンダリングされましたか?私はそれが必要なときにのみレンダリングを呼び出すためにすべてを修正しました。それが偉大な解決策かどうかは分かりませんが、確かに私のCPUスパイクが邪魔にならないようにしています。お返事をありがとうございます。 – hanesjw

+0

私はそれがかなりスマートだと言います。したがって、基本的にはレンダリングを呼び出すだけで必要なときに呼び出すことができます。また、ゲームの可視部分をレンダリングすることを制限することもできます。したがって、レンダリングしたくないオブジェクトに対しては、displayObject.visible = falseを設定します。 – Hachi

関連する問題