2009-12-05 24 views
0

我是新來OpenGL和使用C#,opentk發展。我的應用程序是非常輕的重量(只是2D圖形),我打算在硬件渲染不可用時使用軟件渲染。OpenGL的依賴

  • 如何確保所有計算機上的軟件渲染都能正常工作? (當硬件渲染不可用時)。
  • 我應該分發像Mesa這樣的軟件渲染庫,我自己。或者它已經可以在所有(Windows)操作系統上使用?
  • 換句話說,opengl32.dll總是可用於所有現代Windows操作系統(> XP SP2)或我應該分發?

(我的應用是非常簡單的(簡單的2D圖形)到現在爲止,我所選擇的OpenGL代替GDI +/WPF因爲,i可以延伸它在未來的3D。)

回答

2

OpenGL是一個系統庫。您不應該將其與您的應用程序分發。特別是在Unix/Linux系統上,應該使用發行版的軟件包管理器進行安裝。

由於OPENGL32.DLL包含在Windows,它退到軟件自動渲染,如果你在你的應用程序選擇的像素格式不是硬件的圖形驅動程序加速。

0

我試圖利用OpenTk爲好,但其本身產生了依賴, - 特別是作爲一個新手 - 並沒有真正做任何事情,但混淆了OpenGL的學習與學習別人的框架的解釋。

OpenGL是 - 作爲其他回答者建議 - 系統庫。有了這個,它就是一個包含在你通過API導入的C DLL中的函數。

OpenTK爲你導入這些函數,這是它增加的唯一真正的好處,但是這樣做,許多類型都被重新解釋,就像OpenTK作者的函數調用一樣。

這會創建一個額外的學習曲線 - 因爲大多數您將要找到的互聯網參考都將是OpenGL--所以您不僅要理解OpenGL - 這很不容易 - 但您是也將涉及OpenGL標準的OpenTK解釋。

現在記住,直到他們得到足夠足夠的用戶羣很多開源項目如OpenTK開始開源,當他們轉換到一個盈利模式。所以假設你學習並依賴OpenTK,當他們改用盈利模式,並且用現金支付時,你就是SOL(運氣不好)。或者你必須支付他們的價格。

我做的是 - 我將OpenTK的OpenGL映射的API映射的源代碼,並根據我的口味重新命名一切。這是一個工作,但它是值得的勞動,它幫助我瞭解OpenGL。

至於分配。除了應該已經在系統上的OpenGL DLL以外,我絕對沒有依賴於外部依賴項。

所有您需要OpenGl的DLL都將預裝在您正在處理的任何Windows操作系統上。我不能說其他的操作系統風格,但我懷疑這可能是這種情況。

最後要注意:OpenGL的手柄天生「的軟件和硬件渲染之間切換」。所以像MESA和OpenTK這樣的庫在高潛在成本下增加了很小的價值。

這些費用是多少?

1)可重新分配的包裝和許可。他們仍然附帶許可證,大多數許可證隨時都可能發生變化。

2)從開源或免費發佈轉換爲盈利模式。

投資自己。 OpenGL文檔非常龐大,有時令人困惑,我的建議是爲了避免「簡單」的路徑與其他模型的「輕鬆」之間的誘惑 - 出於一個簡單的原因。

我知道你正在使用這個2d應用程序。即使你使用的是正交視圖,事情的實質是你正在學習OpenGL,它是一個3D模型。所以給自己先給自己一些教學的禮物吧,因爲實際上沒有理解3d的「簡單路徑」 - 因此沒有真正的價值增加了​​您傾向於使用的外部依賴。

有一點要記住:建模。如果/當你切換到3D建模,在opengl中通過手工編碼創建頂點是一個婊子。我使用Blender創建我的obj模型,並將它們讀入我自己的c#應用程序中,該應用程序讀入三維模型並讓我從那裏操作它們。

我一直在使用C++,它確實速度更快,但是一旦我將API轉換爲c#代碼,並開始利用垃圾收集模型管理自己的內存,它就變得比學習別人的庫容易得多。

不使用可再分發。並利用OpenTK中的代碼進行修改,但不要將OpenTK作爲可重新發布的代碼。

這是我的建議。