2012-09-12 21 views
1

我缺少opengl32庫(更多詳細信息:mingw32 w64 missing OpenGL32 lib)。我有幾個與此庫有關的問題:OpenGL32庫

  1. 爲什麼我需要opengl32靜態庫(我有.dll)?
  2. 爲什麼視頻卡廠商不提供這個庫?
  3. 誰應該提供它?
  4. 是否有opengl32庫的源代碼?
  5. 爲什麼我需要GLEW或其他GL庫實現(使用OpenGL的所有功能)如果有opengl32?爲什麼opengl32不能擁有所有需要的GL實現?
+0

哪個操作系統? – Kos

回答

3
  1. 它不是一個靜態庫,它是動態鏈接到DLL的庫。
  2. 因爲它是OS的一部分,或多或少。從OpenGL32.dll導出的符號往往是標準的(一組特定的gl...函數)和Microsoft特定的(至少爲wgl)。衆所周知的廠商之間不存在差異。
  3. Microsoft確實提供了它以及它們的編譯器。任何其他的編譯器廠商也應該這樣做,因爲libs可能有點特定於編譯器。
  4. Mesa是一個開放源代碼的OpenGL實現,所以你會得到最接近的。
  5. 你不這樣做,你可以手動獲取字符串和函數指針,它只是非常單調乏味。 GLEW等人爲你做了大部分功能檢查和初始化。他們不會直接使用OpenGL32.dll做任何事情,但它們讓生活變得更容易。
7

爲什麼我需要opengl32靜態庫(我有.dll)?

它提供了鏈接器的符號表。符號表告訴鏈接器庫提供了哪些函數,以便鏈接器知道如何將程序中使用的符號綁定到鏈接的庫。

請注意,在除窗口以外的其他操作系統上,「DLL」也提供符號表。

爲什麼視頻卡廠商不提供這個庫?

因爲圖書館是OS接口連接到驅動器系統

誰應該提供它的一部分嗎?

DLL:OS供應商。 符號表庫:編譯器廠商。

是否有opengl32庫的源代碼?

OpenGL本身只是一個規範。你在計算機上擁有的是一個實現和一個接口。該界面是OS的一部分。因此,在閉源操作系統中沒有可用的源代碼,但是在開源操作系統上有。

爲什麼我需要GLEW或其他GL庫的實現(使用OpenGL的所有功能)如果有opengl32?

opengl32.dll只是一個驅動程序系統的接口。這個接口需要成爲OpenGL特性的最小公分母,因此可以通過一個通用接口提供廣泛的OpenGL版本和功能。但是,您也希望能夠訪問擴展機制所存在的更新,更尖端的功能。

爲什麼opengl32不能擁有所有需要的GL實現?

opengl32.dll是操作系統的一部分,如果它是操作系統的一部分,那麼每個新版本的OpenGL都需要一個操作系統更新。這實際上是MacOS X的情況。

另外OpenGL 實現是驅動程序的一部分,而不是DLL。

+0

謝謝。如果你回答我在問題中提到的問題,如果你對MinGW OpenGL靜態庫有所瞭解,我將不勝感激。 – user14416