Silverlight 3引入了GPU加速的特性,該功能預設為禁用。啟用該功能需要:
1. 在Silverlight plug-in上設定 <param name="enableGPUAcceleration" value="true" /> 或使用代碼 Application.Current.Host.Settings. EnableGPUAcceleration= True;
2.在類型為UIElement的控制項上設定 CacheMode = "BitmapCache" - 所謂GPU加速是基於GPU緩衝了一些UI元素,節省了CPU的耗用
如何知道哪些控制項被緩衝?在Silverlight plug-in上設定 < param name = "enableCacheVisualization" value = "true" /> 後程式介面中會有顏色變化:
1. 紅色表示沒有被緩衝
2. 正常顏色表示被緩衝
3. 綠色表示沒有設定 CacheMode = "BitmapCache",但被自動緩衝
由於GPU加速的原理是緩衝,那麼頻繁變動的UIElement就不適宜使用,因為緩衝的頻繁更新反而會帶 來效能損耗。但是MideaElement例如視 頻使用GPU加速可以實現效能提高 :
圖:啟用緩衝的視頻
但是perspetive 3d效果的視頻 則不可以:
圖:右側視頻使用了Pespective 3d效果,顯示為紅色,沒有緩衝
GPU加速的限制:
1. GPU 加速僅支援如下動畫: Scale, Rotate, Changing Opacity, Clipping (only if clip is rectangular),其他則不支援,例如 Perspective 3d效果的動畫。
2. GPU顯存不足,Silverlight會預設使用CPU來實現緩衝,這反而會增加CPU的負擔 - 目前Silverlight還不支援查詢GPU緩衝大小的方法,僅提供了Analytics.GpuCollection 屬性。
3. 需要支援DirectX(Windows) 或OpenGL(Mac)的顯卡,且Mac上僅支援全螢幕模式
參考:
1. https://blogs.msdn.com/b/rahul/archive/2010/06/09/silverlight-graphics-and-hardware-acceleration.aspx
2. http://dotnetslackers.com/articles/silverlight/discovering-silverlight3-deep-dive-into-gpu-acceleration.aspx
3. http://arthraim.cn/silverlight-3-and-gpu-acceleration/
裝扮小遊戲
換裝小遊戲
化妝小遊戲
美女小遊戲
原文:http://blog.csdn.net/jameszhou/archive/2010/06/14/5670852.aspx