我正在使用 Windows 7 并使用 VC++ 2010,这是一个 32 位应用程序
我试图让我的渲染器多线程工作,但事实证明我让它比不使用多线程慢。
我希望它具有将渲染命令添加到列表的主线程,以及执行这些命令渲染的工作线程。
这一切都发生了,它可以很好地绘制到屏幕上,但是这样做时我得到的fps更少......
我使用 Fraps 中的基准测试工具来获取这些数据:
时间是基准测试的时间,在本例中为 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);