我有一个应用程序下降到 10fps 左右。我使用 xperf 对其进行了分析,结果显示我的应用程序只使用了 20% 的 CPU,而我的任何方法都没有使用超过预期的 20%。
这似乎表明 fps 的大幅下降是因为显卡无法跟上渲染帧的速度,导致我的程序在赶上时停止......
有什么方法可以分析显卡的功能并计算出我的程序告诉它做什么来减慢它的速度,以便我可以尝试提高帧速率?
对于调试/分析图形,请尝试 Nvidia PerfHUD
NVIDIA PerfHUD 是一款功能强大的 Direct3D 应用程序实时性能分析工具。
还有一个 ATI 解决方案,称为“GPU PerfStudio”
GPU PerfStudio 是一种实时性能分析工具,旨在帮助调整 DirectX 9、DirectX 10 和 OpenGL 应用程序的图形性能。GPU PerfStudio 显示实时 API、驱动程序和硬件数据,这些数据可以使用极其灵活的绘图和条形图机制进行可视化。被分析的应用程序可以在本地或通过网络远程执行。GPU PerfStudio 允许开发人员实时覆盖关键渲染状态,以实现快速瓶颈检测。自动分析窗口可用于识别图形管道各个阶段的性能问题。使用 GPU PerfStudio 不需要特殊的驱动程序或代码修改。
您可以在此处找到更多信息和下载链接:
您可以尝试使用 dxprof(在 google 中搜索)。它是一个轻量级的应用程序,可以实时绘制条形图,每个条形图对应一个 DirectX 事件(例如绘制调用或资源复制)。您可以冻结条形图并检查调用堆栈以找出绘图调用的来源。
你在为 Windows 开发吗?如果是这样,请避免使用 Video for Windows,因为这会限制您使用您描述的方式。请改用 DirectX。
无需猜测。只需在 IDE 下暂停几次,它就会准确显示它在等待什么。