1

私はしばらくの間、この問題について疑問に思っていました。グラフィカル パイプラインのボトルネックを見つける方法。最近、私はプログラムを使用して、アルファブレンディングを使用した単純なシーン (別名草のシーン) に大量のポリゴンを描画しています。私は 2 つのプログラムを使用しました。1 つは静的座標を使用し、もう 1 つは回転と移動を使用します。どちらも 60 FPS で実行され、他の重いプロセスは実行されていません。しかし、それらを一緒に使用すると (それぞれ同じ量の草と草の位置を持つ 2 つのウィンドウ)、移動と回転を使用するものは 10 FPS で実行されますが、もう一方は約 55 FPS です。私の質問は、両方が 60 FPS で実行されている理由と、そのようなことが起こったときに、2 つ目 (各草の回転と移動) が約 50 FPS 低下するのに、2 つ目はまだ 55 であるのはなぜですか? 私にはボトルネックのように聞こえます。お気づきの点がございましたら、お知らせください。

4

1 に答える 1

5

実際の問題は、GPU やプログラムのボトルネックではなく、ドライバーのボトルネックです。glRotate と glTranslate は、ドライバー モードへの多くのコンテキスト スイッチを引き起こし、パフォーマンスを低下させます。生産的である代わりに、簿記に常に時間を無駄にしていることはほとんどありません。

発生したこの特定の問題を軽減するために、インスタンス化が導入されました。

グラフィックス パイプラインのプロファイリング方法に答えるために、そこで役立つツールがいくつかあります。

gDEBugger http://www.gremedy.com/

NVPerfkit http://developer.nvidia.com/nvidia-perfkit

GPU パフォーマンス スタジオhttp://developer.amd.com/tools/PerfStudio/Pages/default.aspx

また、プログラムでいくつかの統計を収集するのにも役立ちます。主に、高価な呼び出しの順序と数に関するものです (主にシェーダー、テクスチャの切り替え)。

于 2011-05-26T09:14:47.767 に答える