2010-04-19 72 views
1

据我所知,在GPU上作为像素着色器完成某些数学函数(如FFT和perlin噪声等)可以更快。我的问题是,如果我想利用这个来计算结果和流到位图,我可以做到这一点,而不需要在Silverlight中实际显示它或什么?卸载到HLSL/GPU而不显示?

更具体地说,我想用这个大型地形生成涉及大量的柏林和其他噪音,和后处理,如高通行证,获得从高度图法线,等等,等等

+0

作为后续工作,我正在研究OpenGL Framebuffer对象,这些对象在屏幕外渲染。我会用OpenTK来处理它(.NET <-> OpenGL)。 http://stackoverflow.com/questions/1483903/fragment-shader-rendering-to-off-screen-frame-buffer – 2010-04-20 12:18:16

回答

1

简短的回答是是。较长的答案是,您可以设置(例如)纹理作为渲染目标,将结果存放在那里。

除非您确实使用着色器进行计算,否则您可能需要考虑使用实际为此类作业设计的内容,例如Cuda或OpenCL。

+0

Cuda或OpenCL是否可以在Silverlight中使用? – AnthonyWJones 2010-04-19 11:52:00

+0

@AnthonyWJones:我真的不确定。 – 2010-04-19 14:53:59

+0

如果silverlight支持DX11,那么你可以使用计算着色器,尽管这会限制你在DX10硬件上运行(我相信DX10级别硬件计算着色器的削减版本,仍然需要DX11)。否则,我会说Cuda/OpenCL不支持(需要第三方DLL,然后如果你正在做一个网络应用程序或类似的东西,这可能不会可行)。 – 2010-07-01 07:24:37

0

嗯,它是一个很好的问题。

任何可以显示的东西都可以使用WriteableBitmap及其Render方法的实例呈现。您可以使用Pixels字节数组属性访问输出。但是(假设GPU加速打开并且内容被适当地标记以利用GPU),当这样的渲染将在实际使用GPU时使用GPU而不是我不知道的显示器时。