我正在寻找对 Xbox 360 上的 XNA 的一些见解,主要是是否可以在其 GPU 上运行基于向量的浮点数学?
如果有办法,你能指出我正确的方向吗?
最佳答案
我并不声称自己是这方面的专家,但希望这可以为您指明有用的方向。
是否可以?是的。您可能已经知道 GPU 擅长此类计算(因此问题),您确实可以使用 XNA 控制 GPU。它是否适合您的需求是另一回事。
要使用 GPU,您可能需要使用 HLSL 编写着色器。在 Reimers 上有关于 XNA 上下文中的 HLSL 的不错介绍。你可能想通过它。值得注意的是,该教程的重点是让 GPU 执行与图形相关的运算,但您在着色器中编写的内容取决于您。如果您的基于矢量的浮点数学是为了渲染(因此可以留在 GPU 域中),那么您很幸运,可以停在这里。
可能在屏幕上渲染不是您所追求的。现在,就数学计算而言,您在 HLSL 中有相当大的灵活性。然而,将结果输出到 CPU 并不是系统的设计方式。这对我来说越来越模糊,但 Shawn Hargreaves(XNA 开发人员)在 more 上说比one occasion从 GPU 获取输出(除了在屏幕上渲染)是非常重要的,并且会影响性能。检索数据涉及调用 GetData 将 cause a pipeline stall .
所以是可以做到的。 XNA 框架允许您为 360 编写着色器(它支持 Shader Model 3.0 和一些扩展),并且可以得到这些结果,尽管它可能不足以满足您的需求。
关于matrix - Xbox 360 上的 GPU 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/125462/