在GPU上测量时间

3
我正在调查一些抗锯齿方法所需的时间。我不确定如何准确计算着色器的计算时间。如果我进行了绘制调用,数据就会被发送到GPU。CPU继续运行,然后等待GPU在交换链完成。那么准确计算时间应该是在 RenderAntialiasing() 前调用 "StartTimer",在 swapChain->Present(0, 0) 后调用 "StopTimer",正确计算出执行时间?我的结果否则将非常奇怪。
1个回答

2

这篇较老的文章介绍了针对图形性能计时的一些挑战。

基于CPU的计时器只能告诉您操作所需的CPU时间,但由于批处理,它很可能与您框定的API函数几乎没有关联。因此,不应尝试“微型基准测试”渲染的CPU成本,而应使用 QueryPerformanceCounter 框定大部分帧数。

要获得GPU计时,可以使用Direct3D时间戳查询。有关Direct3D 11,参见D3D11_QUERY_TIMESTAMP_DISJOINTD3D11_QUERY_TIMESTAMP


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接