我正在寻找一些关于XNA在Xbox360上的洞察力,主要是如果有可能在它的GPU上运行基于向量的浮点数学?
如果有办法,你能告诉我正确的方向吗?
发布于 2008-09-24 05:28:07
我并不自称是这方面的专家,但希望这能为你指明一个有用的方向。
有可能吗?是。您可能已经知道GPU擅长这样的计算(因此问题出现了),并且您确实可以使用XNA控制GPU。它是否适合您的需求则是另一回事。
要使用GPU,您可能希望使用HLSL编写着色器。在Reimers的XNA上下文中有一个关于HLSL的很好的介绍,您可能想要通读一下。值得注意的是,该教程侧重于让GPU执行与图形相关的处理,但您在着色器中编写的内容取决于您。如果您的基于矢量的浮点数学是为了渲染(因此可以停留在GPU域中),那么您就走运了,可以到此为止了。
在屏幕上渲染可能不是你想要的。现在,你在HLSL中有相当大的灵活性,只要你做你的算术。然而,将结果输出到CPU并不是系统设计的方式。这对我来说变得模糊了,但Shawn Hargreaves ( XNA开发人员)在more上而不是one occasion上表示,从图形处理器获得输出(而不是在屏幕上渲染)并不是微不足道的,而且会影响性能。检索数据涉及到对GetData的调用,该调用将执行cause a pipeline stall。
所以这是可以做到的。XNA框架将允许您为360 (支持Shader Model 3.0和一些扩展)编写着色器,并且可以获得这些结果,尽管它可能不足以满足您的需求。
发布于 2008-09-26 21:20:11
如上所述- XBox360完全能够进行任何HLSL计算,具体地说,它可以处理顶点和像素着色器模型3指令,并具有特定于平台的增强指令集。
因为HLSL实际上是基于向量的,所以你有你需要的所有工具-点,交叉,向量运算和矩阵计算。如果要将计算发送到GPU并在CPU上编辑/使用结果,可以写入纹理,然后在CPU端获取并解码它-将其用于粒子或物理交互(如水)的情况很少发生。
https://stackoverflow.com/questions/125462
复制相似问题