gpt4 book ai didi

graphics - 使用 Direct3D 时,CPU 上执行了多少数学运算?

转载 作者:行者123 更新时间:2023-12-03 05:51:04 25 4
gpt4 key购买 nike

上下文:我才刚刚开始。我什至没有接触 Direct3D 11 API,而是着眼于理解管道等。

从网络上流传的文档和信息来看,应用程序似乎正在处理一些计算。也就是说,计算不是简单地向 GPU 提供矩阵相乘,而是由在 CPU 上运行的数学库完成。我没有任何特定的资源可以指向,尽管我想我可以指向 XNA Math Library或 2 月份 DX SDK 中提供的示例。当您看到像 mViewProj = mView * mProj; 这样的代码时,该投影是在 CPU 上计算的。还是我错了?

如果你正在编写一个程序,屏幕上可以有 10 个立方体,你可以移动或旋转立方体以及视点,你会在 CPU 上进行什么计算?我想我会存储单个立方体的几何形状,然后转换代表实际实例的矩阵。然后我似乎会使用 XNA 数学库或我选择的另一个数学库来转换模型空间中的每个立方体。然后获取世界空间中的坐标。然后将信息推送到GPU。

CPU 上的计算量相当大。我错了吗?

  • 我是否基于太少的信息和理解而得出结论?
  • 如果答案是 STFW,我应该通过 Google 搜索哪些术语?
  • 或者,如果我是对的,为什么这些计算不被推送到 GPU?

编辑:顺便说一下,我没有使用 XNA,但文档指出 XNA 数学库取代了以前的 DX 数学库。 (我将 SDK 中的 XNA 库视为纯粹的模板库)。

最佳答案

“我是否基于太少的信息和理解而得出结论?”

这并不是一件坏事,因为我们都这样做,但总而言之:是的。

GPU 正在执行的操作通常取决于 GPU 驱动程序和您的访问方法。大多数时候你真的不关心或不需要知道(除了好奇和一般理解)。

对于mViewProj = mView * mProj;这很可能发生在 CPU 上。但负担并不大(最多以100个周期计算)。真正的技巧是新的 View 矩阵在“世界”上的应用。每个顶点都需要或多或少地进行变换,以及着色、纹理、光照等。如果这项工作将在 GPU 中完成,那么所有这些工作(如果在 CPU 上完成,速度会非常快)。

通常,您会对世界进行高级别的更改,可能需要 20 个 CPU 密集型计算,而 GPU 负责根据更改渲染世界所需的数百万或数十亿次计算。

在您的 10 个立方体示例中:您为每个立方体提供一个转换,创建转换所需的任何数学运算均受 CPU 限制(有异常(exception))。您还可以为 View 提供一个变换,同样,创建变换矩阵可能会受到 CPU 限制。一旦你有了 11 个新矩阵,你就可以将它们应用到世界上。从硬件的角度来看,需要将 11 个矩阵复制到 GPU...这会发生得非常非常快...一旦复制完成,CPU 就会完成,GPU 将根据新数据重新计算世界,将其渲染为一个缓冲区并将其拉到屏幕上。因此,对于 10 个立方体,CPU 密集型计算是微不足道的。

查看 XNA 项目的一些反射(reflect)代码,您将看到计算在哪里结束,XNA 开始在哪里(XNA 会做 GPU 中可能做的一切事情)。

关于graphics - 使用 Direct3D 时,CPU 上执行了多少数学运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2878479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com