据我所知,某些数学函数(如 FFT 和 perlin 噪声等)在 GPU 上作为像素着色器执行时会快得多。我的问题是,如果我想利用它来计算结果并流式传输到位图,我可以在不需要在 Silverlight 中实际显示它的情况下做到这一点吗?
更具体地说,我正在考虑将其用于涉及大量 perlin 和其他噪声的大型地形生成,以及诸如高通和从高度图导出法线等的后处理。
据我所知,某些数学函数(如 FFT 和 perlin 噪声等)在 GPU 上作为像素着色器执行时会快得多。我的问题是,如果我想利用它来计算结果并流式传输到位图,我可以在不需要在 Silverlight 中实际显示它的情况下做到这一点吗?
更具体地说,我正在考虑将其用于涉及大量 perlin 和其他噪声的大型地形生成,以及诸如高通和从高度图导出法线等的后处理。
简短的回答是肯定的。更长的答案是您可以将(例如)纹理设置为渲染目标,将结果存放在那里。
除非您真的打算使用着色器进行计算,否则您可能需要考虑使用实际为此类工作设计的东西,例如 Cuda 或 OpenCL。
嗯,这是个好问题。
任何可以显示的东西都可以使用 的实例WriteableBitmap
及其Render
方法来呈现。您可以使用Pixels
字节数组属性访问输出。
但是(假设 GPU 加速已打开并且内容被适当地标记为使用 GPU)WriteableBitmap
在我不知道的情况下,这样的渲染是否会真正使用 GPU 而不是显示。