17

Canvas2Dでjavascriptを使用して5つのスプライトを表示する小さなエンジンをコーディングしました。すべてが正常に機能し、完全に最適化されています。

FPSは30から60の間で変動しますが、興味深いのは、GoogleJavaScriptコンソールが開いているときに一定の60fpsで表示されることです。

これを経験している他の体はありますか?

nbrequestAnimationFrameを使用しています

編集:

例: http: //jsfiddle.net/jrPNy/1

「パーティクル」番号をいじって、fpsが約40〜50になるようにします。コンソールを開くよりも、最大60fpsになります。(Chrome 21.0.1180.83)

4

3 に答える 3

7

質問の作者がコメントで述べたように、これは目に見えるキャンバス領域と関係があります。コンソールを開くと、ビューポートの高さが低くなります。これは、通常のサイズのディスプレイでは、レンダリングするコンテンツが少なくなることを意味します。60 FPSは、ディスプレイのリフレッシュレートによって与えられるソフト制限です。通常のモニターでは毎秒60フレームを超えて表示することは不可能であるため、それより多くのフレームを実行しても意味がありません。

私は自分のマシンでこれをテストし、CPU速度を下げて、常に60FPSが得られるとは限らないようにしました。提供されたフィドルの例では、私は通常約24FPSを持っていました。コンソールを開くと、表示されるキャンバスが元のサイズの約60%に減少し、FPSは平均で30に増加しました。コンソールのサイズを変更すると、それに応じてFPSに影響します。キャンバスの10%のみが表示され、FPSは42前後で揺れ、コンソールが非常に小さく、キャンバス全体が表示されると、FPSは元の値をわずかに下回って23になります。コンソールの状態に関係なく、CPU速度によりFPSは一定の60になりました。

画面を生成するJavaScriptがまだ実行されているとすると、表示されているキャンバスの量に関係なく、必要な処理能力に影響を与えるのは、キャンバスの実際のレンダリングと、キャンバス画像が残りの部分に合成される方法です。 HTML、ブラウザウィンドウ、そして最後に画面に表示されます。その作業の多くはGPUに移されるため、合成プロセスのすべての段階がOpenGLで実行される場合、FPSは常に最大化される必要があります。

于 2012-08-26T02:17:50.417 に答える
1

私は私のmacbookのクロムで同じことを経験しました。osxドックがフレームレートの低下を引き起こしているようです。コンソールを開くと、ビューポートがドックから十分に離れており、フレームレートが60fpsに戻ります。ウィンドウをドックから離すと、フレームレートが上がります。ドックを自動非表示にすると、コンソールを開かなくても60fpsのフルスクリーンを表示できます。

于 2014-09-10T14:45:06.657 に答える
-1

Google Chromeはvsyncを使用します。つまり、FPSを画面のFPS制限に制限します。ほとんどの画面は60 FPSであるため、Googleは可能であればそれに一致しますが、それを超えることはありません。vsyncを削除するプログラムがあるかもしれませんが、Nvidiaドライバーがこれを制御できることは知っていますが、これを行うにはGTX610またはhightが必要です。

于 2013-05-06T19:34:55.863 に答える