我可以在视频游戏进入 GPU 之前记录图形数据吗?



我试图了解图形的处理方式。程序是否可以在将图形数据发送到 GPU 之前获取图形数据,记录它,将其发送到 gpu,从 GPU 获取处理后的结果并将其发送到请求该过程的视频游戏?我不确定我是否清楚地解释了这些,但我对这个顶部相对较新,所以我对此感到抱歉。

在这种情况下,不清楚"图形数据"是什么意思,所以我假设你指的是最终渲染的帧。

在这种情况下,答案是否定的。

帧缓冲区在 GPU 上生成(渲染)。在任何现代游戏中,CPU 上唯一的东西是发送到视频驱动程序并转换为 GPU 理解的其他命令的绘图命令列表。CPU 端没有图像,除非您渲染到纹理并将其复制回主机。

关于你问题的第二部分:

"请求进程的游戏"并没有真正从GPU获得太多反馈。显示器(显示器、HMD 或其他任何内容)显示驻留在 GPU 上的缓冲区的内容。游戏永远不会收到渲染的帧,除非它真的想要它并且要经历很多麻烦才能将其复制回主机。渲染在很大程度上是一个开环过程。除了一些错误和状态代码之外,主机应用程序确实无法验证GPU上发生的事情(同样,如果不渲染到屏幕外缓冲区并将该数据复制回CPU)。

我会搜索"OpenGL渲染管线"以更好地了解它是如何工作的。(顺便说一句,DirectX的工作方式相同。

现在,如果您正在寻找更好地了解游戏中的渲染 API 调用如何对屏幕上的最终输出做出贡献,您可以查看一些工具,例如 RenderDoc,它可以让您查看每个 API 调用对帧缓冲区(和其他渲染目标)的影响。除非您熟悉正在使用的 API,否则解析您将在这些工具中看到的内容并非易事。

最新更新