最近要在C#的語言環境下開發OpenGL程序,參考了網上的博客論壇http://www.cnblogs.com/hanyonglu/archive/2012/06/12/2546581.html,總結如下:
1.在C#中直接調用OpenGL函數比較費事,一般不直接使用;
2.一般的開發方法是借助第三方開源庫,比如SharpGL、CsGL、OpenTK、Tao框架等。其中Tao框架框架已經停止維護和更新了,可以被OpenTK替代,這里就不介紹了。
下面比較一下SharpGL、CsGL、OpenTK這三種開發框架:
1.SharpGL
SharpGL的主頁:http://sharpgl.codeplex.com/
只需要在下載頁面中下載SharpGL Visual Studio Extension文件,解壓之后點擊直接安裝,就會在Visual Studio 2010中集成SharpGL的項目模板,如下圖所示:
在新建一個SharpGL Windows Forms Application工程后,將自動建立一個工程,可以直接運行,運行效果如下:
對SharpGL的總結如下:
(1)安裝部署方便,可以非常容易的集成到Windows Forms和WPF中去使用;
(2)存在內存泄露的問題,即使運行一個簡單的程序,內存在不斷增長,當增長到了一定時就不會有太多的增長,由於例程都有這樣的問題,對於我們自己編寫程序,應作適當考慮;
(3)目前SharpGL已經支持到OpenGL4.2(http://sharpgl.codeplex.com/discussions/431042),在所有的第三方庫中,其支持的OpenGL版本應該是最高的;
(4)不支持Linux和Mac平台(http://sharpgl.codeplex.com/discussions/356490)
2. CsGL
CsGL的主頁:http://csgl.sourceforge.net/
CsGL也是一個比較方便的庫,運行時占用資源較少,響應速度較快。在下載了之后只需要將csgl.dll和csgl.native.dll這兩個庫拷貝至system32文件夾內即可。但在運行程序時,會報以下錯誤:
解決的方法是將csgl.native.dll拷貝至程序運行路徑下。
對CsGL的總結如下:
(1)是一個較為輕量級的庫,運行時占用資源少,響應速度快;
(2)官方已經至少十年沒有更新,原因是官方認為CsGL已經足夠穩定,能夠支持大多數的程序了,不需要繼續更新了(Development of CsGL has essentially stopped. CsGL has proven to be stable and good enough for most applications),正因為如此,CsGL支持的OpenGl版 本最低;
(3)CsGl只支持32位的程序,無法支持64位,網上並沒有提供64位的dll,這在很大程度上影響了其使用。
3.OpenTK
OpenTK的主頁: https://opentk.net/ 。原來的官方地址http://www.opentk.com/已經失效,不可訪問。
GitHub源碼地址:https://github.com/opentk/opentk
在下載了OpenTK的安裝文件后,直接安裝OpenTK就可以使用了。
對OpenTK的總結如下:
(1)安裝部署方便,在程序中可以直接引用;
(2)可以支持跨平台的開發,特別是支持OpenGL ES;
(3)支持64位的Windows程序開發;
(4)在資源占用和響應速度上雖然比不上CsGL,但是優於SharpGL;
(5)對OpenGL的版本支持在3.3以上。