2010-10-27 47 views
1

我想知道是否有人可以幫助解決這個問題,或者有類似的問題。我正在嘗試使用Silverlight製作WP7中的基本遊戲,但無法啓動GPU加速。Windows Phone 7 - GPU加速不起作用

幀速率計數器可見,表示正在使用GPU,directx版本爲10,directx驅動程序版本是WDD​​M 1.1。

我已經試過切割代碼右後衛喜歡簡單的東西:

<Canvas x:Name="LayoutRoot" CacheMode="BitmapCache"> 
    <Rectangle x:Name="test" Fill="Green" Width="100" Height="100" Canvas.Left="50" Canvas.Top="200" CacheMode="BitmapCache" /> 
</Canvas> 

和矩形仍然有藍色的色調給它表明它是不是被GPU加速。

任何想法,爲什麼這可能是?

感謝您的時間

回答

2

你確定你有這個想法嗎?

另一種可視化緩存的好方法是使用前面提到的EnableCacheVisualization標誌。再次,這在公共預覽版本中不可用,但將在未來的版本中提供。
將此功能打開後,會將每個紋理的藍色色調和透明度添加到GPU。這種可視化的結果是一張熱圖,其中最黑暗的藍色陰影對應於多個紋理疊加在一起。這可以讓你看到一些隱藏的對象,這些對象在第一次檢查時可能不是明顯的貢獻率。通過在這裏添加每個矩形所覆蓋的面積越大,交給GPU的像素越多。 請注意,啓用EnableCacheVisualization標誌會導致GPU執行額外的工作,因此可能會降低幀速率,具體取決於當前的填充率以及有多少紋理正在着色。使用此標誌時,幀速率計數器不會指示應用程序的真實幀速率。另外,如前所述,EnableCacheVisualization標誌的行爲在用於Windows Phone的Silverlight和用於其他平臺的Silverlight上不同。在Windows Phone上,由GPU加速的紋理是有色的。在其他平臺上,着色區域顯示GPU不加速的紋理。

爲什麼要爲這些對象添加CacheMode =「BitmapCache」?我只會將此僅添加到基於回調更新使用動畫的對象。其他動畫(故事板動畫)默認使用緩存以及ScrollViewer,Listbox等。

+0

我在這裏閱讀相反:http://msdn.microsoft.com/en-us/library/system.windows.interop.settings.enablecachevisualization%28VS.95%29.aspx「獲取或設置一個值,指示是否使用非生產分析可視化模式,該模式顯示未使用彩色覆蓋圖進行GPU加速的頁面區域,請勿在生產代碼中使用。「最初我手動移動屏幕上的圖像,所以想要緩存,認爲我只是嘗試更簡單的代碼來看看發生了什麼問題。 – JeremyBeadle 2010-10-27 22:18:17

+0

我的錯誤,你是對的,它在WP7中被顛倒「彩色區域會顯示傳遞給GPU的紋理,以便在Silverlight for Windows Phone中進行加速。在Silverlight瀏覽器插件中,彩色區域顯示的紋理不是由GPU加速的。「。模擬器的性能必須非常差:(謝謝! – JeremyBeadle 2010-10-27 22:21:06

-2

我不是專家,但也許你需要使用XNA,Silverlight的不是爲獲得GPU加速?

+0

感謝您的回覆,據我所知,它在Silverlight中的作用也像在桌面上 – JeremyBeadle 2010-10-27 21:28:53

+0

我也忘了提及這是使用最新的模擬器,而不是設備.. – JeremyBeadle 2010-10-27 22:06:20

+3

爲什麼回答如果你承認不知道答案? – Jay 2010-10-28 18:27:31