Windows 7 と VC++ 2010 を使用しています。これは 32 ビット アプリケーションです。
レンダラーをマルチスレッドで動作させようとしていますが、マルチスレッドを使用しない場合よりも遅くなることが判明しました。
リストにレンダリング コマンドを追加するメイン スレッドと、これらのコマンドのレンダリングを行うワーカー スレッドが必要です。
これはすべて発生し、画面にうまく描画されますが、そうするとfpsが少なくなります...
Fraps のベンチマーク ツールを使用して、このデータを取得しました。
Time はベンチマークされた時間で、この場合は 30 秒です。
最小、最大、平均はすべて FPS 値です。
マルチスレッドの場合:
Frames, Time (ms), Min, Max, Avg
28100, 30000, 861,1025, 936.667
マルチスレッドなし:
Frames, Time (ms), Min, Max, Avg
21483, 30000, 565, 755, 716.100
ここにいくつかの疑似コードがあります (関連するイベント関数呼び出しを含む):
Main Thread:
Add render comands to queue
ResetEvent (renderCompletedEvent);
SetEvent (renderCommandsEvent);
WaitForSingleObject (renderCompletedEvent, INFINITE);
Render Thread:
WaitForSingleObject (renderCommandsEvent, INFINITE);
Process commands
SetEvent (renderCompletedEvent);
ResetEvent (renderCommandsEvent);