我正在寻找Xbox 360上XNA的一些见解,主要是因为它可以在GPU上运行基于矢量的浮动数学?

如果有办法,你能指出我正确的方向吗?

有帮助吗?

解决方案

我并不认为自己是这方面的专家,但希望这可以为您指明方向。

有可能吗?是。您可能已经知道GPU擅长此类计算(因此问题),您确实可以使用XNA控制GPU。它是否适合您的需求是另一回事。

要使用GPU,您可能希望使用HLSL编写着色器。在XNA的 Reimers 中,有一个很好的HLSL介绍a>你可能想要通过。值得注意的是,该教程侧重于使GPU进行与图形相关的处理,但是您在着色器中编写的内容取决于您。如果基于矢量的浮点数学是为了渲染(因此可以保留在GPU域中),那么你很幸运,可以在这里停下来。

可能在屏幕上渲染不是你想要的。现在,就你的数学运算而言,你在HLSL中有相当大的灵活性。但是,将结果输出到CPU并不是系统的设计方式。这对我来说很模糊,但是Shawn Hargreaves(XNA开发者)在更多 一次从GPU获取输出(除了在屏幕上呈现)是非平凡且具有性能影响。检索数据涉及对GetData的调用,该调用将导致管道失速

所以可以做到。 XNA框架将允许您为360编写着色器(支持Shader Model 3.0以及一些扩展),并且 可以获得这些结果,尽管它可能不足以满足您的需求。

其他提示

如上所述 - XBox360完全能够进行任何HLSL计算,具体而言,它可以处理Vertex和Pixel着色器模型3指令,并具有一组特定于平台的增强指令。

由于HLSL实际上是基于矢量的,因此您拥有所需的所有工具 - 点,交叉,矢量运算和矩阵计算。 如果你想将计算发送到GPU并在CPU上编辑/使用结果,你可以写入纹理,然后在CPU端获取它并对其进行解码 - 使用它进行粒子或物理交互(如水)很少你可能想要这样做的时候。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top