c++ - 在 GPU 上测量时间

标签 c++ time directx measurement

我目前正在调查一些抗锯齿方法所花费的时间。我不完全确定如何准确计算着色器计算时间。我是否正确地假设如果我进行绘图调用,数据将发送到 GPU。 CPU继续运行,然后等待GPU在交换链上完成。因此准确计算时间将是 RenderAntialiasing() 之前的“StartTimer”和 swapChain->Present(0, 0) 之后的“StopTimer”; ?

否则我的结果会很奇怪。

最佳答案

This相当过时的文章让您了解在为图形进行性能计时时遇到的一些挑战。

所有基于 CPU 的计时器都可以告诉您操作所需的 CPU 时间,但由于批处理,它可能与您所包含的 API 函数几乎没有关联。因此,您不应尝试对渲染的 CPU 成本进行“微基准测试”,而应使用 QueryPerformanceCounter 将大部分帧括起来。

要获得 GPU 计时,您可以使用 Direct3D 时间戳查询。对于 Direct3D 11,请参阅 D3D11_QUERY_TIMESTAMP_DISJOINTD3D11_QUERY_TIMESTAMP

关于c++ - 在 GPU 上测量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37594221/

相关文章:

c - 卡住时间以获得相同的随机结果

vb.net - 检索应用程序的构建时间

Java时间测量不正确

c++ - 在 c++ w/directx 中测试正方形是否与多边形重叠(可选)

c++ - 我应该如何从 Eigen 3中的张量切片中获取 vector ?

c++ - "non-native"指针会损害缓存性能吗?

c++ - Xcode 4.6/Clang 4.2 找不到 C++11 header

c++ - Visual Studio 中的富用户界面应用程序

c++ - 无法让 CreateDDSTextureFromFile 工作

c++ - 如何使用旋转矩阵?