2011-03-09 35 views
1

我有一種情況,每次旋轉時都需要將一些算法應用於我的紋理。通過Texture2D執行圖像處理算法的有效方法

我的問題是 - 在XNA中應用圖像處理算法的最佳方法是什麼?

現在紋理是一個RenderTarget2D,算法用它的像素執行一些操作並將它們設置回RenderTarget2D。這種方法導致我的應用程序終止,它的性能非常糟糕。

我通過stackoverflow搜索,但沒有發現任何相關的主題。 我也讀過這篇文章http://blogs.msdn.com/b/shawnhar/archive/2008/04/14/stalling-the-pipeline.aspx並瞭解我的方法有多糟糕。

+0

這取決於算法是什麼,應用它的頻率以及何時需要應用它(編譯時間,加載時間,運行時間?)。你能提供更多細節嗎? – 2011-03-10 06:47:46

+0

Andrew,這個算法被應用在運行時(每次紋理旋轉時)。考慮到紋理可以在每次更新時旋轉,這意味着算法應該在每次繪製之前應用。 – zavolokas 2011-03-10 08:14:10

+1

真的這是一個性能問題。從渲染目標讀取是一種選擇。使用像素着色器通常是最快的方法 - 但有很多限制 - 然後用於克服這些限制的一系列技術。在我縮小範圍之前,我需要了解更多有關該算法的信息。另外,你的意思是「旋轉」?你在移動頂點嗎?紋理座標?或者更復雜的東西? – 2011-03-10 13:56:34

回答

1

根據您可能需要的操作,然後通過HLSL着色器進行操作將是一個非常好的主意。

着色器確實是正確的選擇,因爲您可以利用GPU具有的多個內核,並且不需要解析rendertarget中的數據;數據在進入屏幕的過程中不會造成任何拖延。