Directx 从GPU获取FPS和帧时间信息

Directx 从GPU获取FPS和帧时间信息,directx,nvidia,amd,frame-rate,vulkan,Directx,Nvidia,Amd,Frame Rate,Vulkan,我是一名数学家,而不是程序员,我对编程的基础知识有一个概念,并且在linux和windows中都是非常高级的超级用户。 我懂一些C和python,但不太懂 我想做一个叠加,这样当我开始游戏时,它可以获得amd和nvidia GPU的信息,如帧时间和FPS,因为我很确定当前用于比较两个GPU的系统基准是有缺陷的,因为小实例和场景会瞬间增加FPS(但在用户体验方面完全无关)导致平均FPS数量增加,无意或有意误导市场(例如,我记不起游戏的名称,可能是因为地图上有一个高度镶嵌的实体,玩家甚至看不到它,这

我是一名数学家,而不是程序员,我对编程的基础知识有一个概念,并且在linux和windows中都是非常高级的超级用户。 我懂一些C和python,但不太懂

我想做一个叠加,这样当我开始游戏时,它可以获得amd和nvidia GPU的信息,如帧时间和FPS,因为我很确定当前用于比较两个GPU的系统基准是有缺陷的,因为小实例和场景会瞬间增加FPS(但在用户体验方面完全无关)导致平均FPS数量增加,无意或有意误导市场(例如,我记不起游戏的名称,可能是因为地图上有一个高度镶嵌的实体,玩家甚至看不到它,这导致AMD GPU在漫游该区域时表现不佳,导致FPS平均计数降低)

理论上我对如何计算GPU性能有一个想法,但我不知道如何从GPU中获取数据,你能让我参考api手册或参考资料来帮助我实现这样的覆盖吗

我想尽可能少地学习(我的意思是我想学习我必须学习的东西,以便完成工作,我不想成为一名程序员)


我提前向您表示感谢。

自己编写代码是非常重要的。这里有一些预先存在的开源选项供您选择:

要获取计时信息并绘制自定义覆盖图,您可以使用(和修改)类似的工具。它支持Direct3D 11、Direct3D 12和Vulkan应用程序


获取时间(以及其他有趣的信息)作为CSV,你可以使用命令行工具,如。应该在D3D中工作,我也在Vulkan应用程序中使用它,它似乎也接受它们。

类似的问题。你可能想在其中分叉一些东西,然后做你自己的事情。这很有用,我没有想到叠加应该首先确定游戏使用的API,我想是这样的查看我需要的数据,但这不是同一个问题,我想知道如何获得FPS和帧时间信息(我想帧时间信息本身就足够了,但因为我们处理的是高时间分辨率,也许FPS也很方便)。不,问题略有不同,但基本问题是相同的:您希望拦截任意应用程序的演示文稿调用并进行覆盖。工具I link同时支持DirectX和Vulkan,因此希望它们在很大程度上为您处理差异。当您拦截演示文稿时,这意味着您有了框架时间。如果你有帧时间,你可以将它们聚合成FPS(如果你是指每一个文字秒,而不仅仅是倒转的帧时间),或者你想要的任何其他方式。减去你想要的叠加,你也可能想要,这可以将当前时间输出到CSV(以及其他有趣的信息)。PS:我可能误解了你所说的“叠加”的意思(通过叠加,我理解了一些原始的东西,例如Steam叠加),所以这个工具可能就是你想要的。要我回答这个问题吗?@papajo:“小实例和场景瞬间增加FPS(但与用户体验完全无关)会导致更高的平均FPS数”这就是平均值的工作原理。那么,你对统计数据有什么问题吗?这与用户体验的相关性取决于个人。就个人而言,我更喜欢帧速率的一致性;我更喜欢稳定的30fps,而不是60fps,但每秒或每秒20 fps。