2011-11-22 43 views
7

我開始對OpenGL感興趣,並試圖找出在學習過程中使用哪種語言的最佳方向。我已經非常熟悉C#,並且從我讀過的內容中,我可以利用Tao API與C#代碼中的OpenGL進行交互。然而,從我讀到的看來,那些真正專業的OpenGL開發人員是C++程序員。在使用OpenGL時,C++比C#有什麼優勢?

我很好奇C++在OpenGL中使用3D圖形時可能對C#有什麼優勢。任何輸入都會很棒,因爲我是一個完整的newby。

+1

投票關閉。谷歌在「C#vs C++」,你會發現許多不同之處。基本上覆雜性與性能是第一位的。 C++可以執行得更好,但如果您在C++方面經驗不足,那麼您生成的代碼可能會比C#等效品更差。 – Polity

+1

[Using OpenGl with C#?]可能的重複?(http://stackoverflow.com/questions/536065/using-opengl-with-c) –

+1

雖然我通常會投票結束「語言X與Y」,但我認爲這對於證實的答案具有優點,因爲它更專注,所以......留給其他人。 – 2011-11-22 05:56:53

回答

5

通過C#使用OpenGL有一些困難。

  1. 獲取最新的SDK。 Tao自2008年以來沒有更新過。OpenTK自2010年6月以來還沒有穩定版本。自2010年6月以來,OpenGL已經有兩個版本發佈。這是很多您無法通過C#訪問的功能。我不知道OpenTK的nightings有多穩定,但我通常不相信nightlies。用C/C++,你可以得到你想要加載的任何函數指針。使用C#,您只能使用您的工具包提供的內容。

  2. 在C#中處理緩衝區對象可能會非常痛苦。是的,有辦法將統一數值的數組上傳到緩衝區對象。但是,在C#中構建交錯頂點數據(其中不同組件具有不同類型)是非常困難的。在C和C++中,您可以直接訪問內存。所以很容易得到3個向量的浮點數,後面跟着4個字節的向量,所有的數據都存儲在每個頂點的16個字節中。這在C#中更加困難。

  3. 圖形代碼通常是代碼中性能更關鍵的區域之一。如果你正在製作像遊戲這樣的高性能渲染應用程序,你一般會希望C++提供的控制。 C#的許多優秀功能在這裏都有效。

使用C#提供的唯一真正的優點是...它是C#。你認爲你的優勢程度,那麼這是一個優勢。

+0

也許使用** C++/CLI **會是「兩個世界中最好的」? –

+2

@UweKeim:怎麼樣?當然,你會得到垃圾回收(用於CLI部分),你可以和CLR標準庫進行交流。但是你沒有得到C#的很好的語言功能。而且由於CLR標準庫對於渲染器來說不是非常有用,所以它沒有那麼大的優勢。你可能使用的最多的是與你的渲染器互操作,但是它可以直接寫成C++。在這種情況下,您的渲染器無需知道或關心它是從CLR調用的。 –

3

與您最直接相關的優勢是使用C語言編寫的示例代碼,這些C++編譯器會很樂意接受的教程的優勢。

最廣泛的應用優勢是可移植性:C#是微軟的寶貝&在非微軟平臺上對該語言的支持很簡單。 Wikipedia currently claims C#的最新ISO標準是2.0,而微軟已經發布了4.0並且已經在開發5.0!

+0

只是爲了更新:根據MS BUILD 2014,C#5的ISO只有幾個月的時間了,MS Roslyn打開了編譯器。 C#在跨平臺方面確實取得了進展。 – Kr0e

相關問題