2010-04-19 45 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而不是我不知道的顯示器時。