[心得] 看看你的顯卡和電腦夠不夠力

作者: erspicu (.)   2015-10-21 00:39:52
https://dl.dropboxusercontent.com/u/61164954/project/RenderingTest/index.html
這是C#結合 GDI+ , Native GDI , DirectX
三者rendering 2D畫面速度的比較...
原本還要加上 opengl版本 ,不過目前 C#上比較完善高效率的opengl wrapper Opentk
顯示到panel上點問題,我try不出來.... 不然就是得用它自己的顯示元件,
不然就是用它自己的game window...所以就不加入測試了
(c#有幾個大小款opengl wrapper,但完成度.使用方便性.效能狀況都很不明...
比較可靠的為opentk,當然opentk不只是針對opengl...
目前opentk似乎還沒辦法像前三者自己顯示到特定UI元件上)
每台電腦這三者高低差異都滿大的...很奇怪的是 GDI+ 在某些電腦 800 *600
狀態下會跟Native GDI差不多甚至更快....某些Native GDI是遙遙領先GDI+,
當然最快的就是DirectX.... 不過可能是我sample的寫法不是很正確,
某些電腦跑DirectX sample會有memory leak問題.....
GDI跟GDI+都得使用bitmap特定元件
directx可以存取記憶體中的array
c#的bitmap元件set或是get pixel都很慢...除非以指標方式操作
最方便的應該還是直接用array來當成為bitmap畫面資料最快...
這幾個測試方式都是以已經有特定的bitmap資料或是畫面array,
建立特定物建去生成畫面,所以嚴格說起來這不單單是測試顯示時間,
還包括處理顯示之前的過程,但不確定這樣的測試觀念正不正確...
或是還要補充啥的....
ps.這些sample是網路上找,整理,改寫出來的...給需要的人參考
PS.想抱怨一下...初入directx,發現僅止於顯示一張靜態畫面都有一堆前置作業..
網路上c# invoke directx的教學資源也少....這sample sharpdx的部分,
花好久時間才摸出來.....sharpdx官方的sample層層一層包一層,霧裡看花,
總算是拆解出來,最簡化步驟...方便人家入門的教學sample搞成這樣不是很方便阿...
作者: KanoLoa (卡)   2015-10-21 21:16:00
先推
作者: name2name2 (yang~hi)   2015-10-25 21:10:00

Links booklink

Contact Us: admin [ a t ] ucptt.com