【问题标题】:When using Direct3D, how much math is being done on the CPU?使用 Direct3D 时,CPU 上做了多少数学运算?
【发布时间】:2010-05-20 23:01:17
【问题描述】:

背景:我才刚刚开始。我什至没有接触 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 库视为纯粹的模板库)。

【问题讨论】:

    标签: graphics rendering direct3d


    【解决方案1】:

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

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

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

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

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

    在您的 10 个立方体示例中:您为每个立方体提供一个变换,创建变换所需的任何数学运算都受 CPU 限制(有例外)。您还为视图提供了一个变换,再次创建变换矩阵可能是 CPU 绑定的。一旦你有了 11 个新矩阵,你就可以将它们应用到世界上。从硬件的角度来看,需要将 11 个矩阵复制到 GPU……这将非常非常快……一旦复制完 CPU,GPU 会根据新数据重新计算世界,将其渲染到一个缓冲区并将其放在屏幕上。因此,对于您的 10 个立方体,CPU 绑定计算是微不足道的。

    查看 XNA 项目的一些反映代码,您会看到计算结束和 XNA 开始的位置(XNA 将尽一切可能在 GPU 中完成)。

    【讨论】:

    • “通常你会对世界进行高级别的更改,可能需要 20 次 CPU 绑定计算”:即使是更复杂的场景?然后你会重新设计你的数学库(比如,将 CPU 绑定计算也推到 GPU 上)吗?或者它只是一个有缺陷的设计,有大量的 CPU 绑定计算? (另外,请注意我的编辑,使用 C++,而不是 C# + XNA)。
    • 使用 CPU 并不邪恶:在现代双核 CPU 上,您可以执行并仍然保持 60 FPS(良好用户体验的最低目标 FPS,恕我直言)的 CPU 计算数量绝对是疯狂的64 位、6 核、12 路径 3.5GHz CPU 的价格低于 1000 美元,它只会变得更好。当然,允许的 CPU 时间百分比完全取决于您。有几个库可以将一般计算推到 GPU 上,请参阅:stackoverflow.com/questions/1249892/…。使用 GPU 作为数学协处理器肯定是在发展中。
    • 我不认为 CPU 是邪恶的,但我只是觉得奇怪的是与渲染图形相关的计算留给了 CPU,然后有一种前沿趋势将这些计算转移到加速渲染的设备。无论如何,最好确认 CPU 上的计算。感谢您花时间回答我的问题。
    • @zirgen: "odd..left to the cpu"...没多久你别无选择...一切都发生在 CPU 中。在给定平台上完成某事的方式总是受到平台历史的影响,并且在某些时候(好吧大多数)历史胜过“正确的方式”。...干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    相关资源
    最近更新 更多