我目前正在调查一些抗锯齿方法所花费的时间。我不完全确定如何准确计算着色器计算时间。我是否正确地假设如果我进行绘图调用,数据将发送到 GPU。 CPU继续运行,然后等待GPU在交换链上完成。因此准确计算时间将是 RenderAntialiasing() 之前的“StartTimer”和 swapChain->Present(0, 0) 之后的“StopTimer”; ?
否则我的结果会很奇怪。
最佳答案
This相当过时的文章让您了解在为图形进行性能计时时遇到的一些挑战。
所有基于 CPU 的计时器都可以告诉您操作所需的 CPU 时间,但由于批处理,它可能与您所包含的 API 函数几乎没有关联。因此,您不应尝试对渲染的 CPU 成本进行“微基准测试”,而应使用 QueryPerformanceCounter
将大部分帧括起来。
要获得 GPU 计时,您可以使用 Direct3D 时间戳查询。对于 Direct3D 11,请参阅 D3D11_QUERY_TIMESTAMP_DISJOINT
和 D3D11_QUERY_TIMESTAMP
。
关于c++ - 在 GPU 上测量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37594221/