獲取 OpenGL

關於 OpenGL 的一個最常見的誤解是,它是一個可以從第三方來源安裝的庫。這種誤解導致了“如何安裝 OpenGL”或“在何處下載 OpenGL SDK”形式的許多問題。

這不是 OpenGL 如何進入計算機系統的方式。OpenGL 本身僅僅是一組關於實現必須遵循的命令的規範。所以重要的是實施。目前,OpenGL 實現是 GPU 驅動程式的一部分。當新的 GPU 程式設計介面允許真正實現 OpenGL 作為庫時,這可能會在未來發生變化,但是現在它是針對圖形驅動程式的程式設計 API。

當 OpenGL 首次釋出時,除了源自 Sun Irix 之外,API 還以某種方式進入了 Windows,Solaris 和 Linux(LSB-4 桌面)的 ABI(應用程式二進位制介面)合同。Apple 遵循並實際上將 OpenGL 整合到 MacOS X 中,以至於可用的 OpenGL 版本與安裝的 MacOS X 版本緊密耦合。這具有顯著的效果,這些作業系統的系統程式設計環境(即本機針對這些系統的編譯器和連結器工具鏈) 必須提供 OpenGL API 定義。這樣就沒有必要為 OpenGL 實際安裝 SDK。假設安裝了目標 ABI 之後的構建環境,在技術上可以在這些作業系統上程式設計 OpenGL 而無需安裝專用 SDK。

這些嚴格的 ABI 規則的副作用是,通過繫結介面公開的 OpenGL 版本是目標平臺上執行的程式可能預期可用的最低公分母。因此,現代 OpenGL 功能將通過擴充套件機制進行訪問,該機制將分別進行深入介紹。

Linux

在 Linux 中,為系統的不同方面劃分開發包是很常見的,因此可以單獨更新這些包。在大多數 Linux 發行版中,OpenGL 的開發檔案包含在專用包中,該包通常是桌面應用程式開發元包的依賴項。所以安裝 Linux 的 OpenGL 開發檔案通常需要安裝桌面開發元軟體包。*

微軟 Windows

預設情況下,自 Windows NT-4 和 Windows 95B(均為 1997 年)以來,每個 Windows 版本都附帶了 API 繫結庫 opengl32.dll(對於 32 位和 64 位版本的 Windows 都是如此)。但是,此 DLL 不提供實際的 OpenGL 實現(除了軟體回退,其唯一目的是在沒有安裝其他 OpenGL 實現的情況下充當程式的安全網)。此 DLL 屬於 Windows,不得更改或移動! 現代 OpenGL 版本作為所謂的可安裝客戶端驅動程式 (ICD)的一部分提供,並通過每個版本的 Windows 預安裝的預設 opengl32.dll 進行訪問。然而,微軟內部決定通過 Windows Update 安裝圖形驅動程式 ** 不會安裝/更新 OpenGL ICD。因此,自動安裝驅動程式的 Windows 的全新安裝缺乏對現代 OpenGL 功能的支援。要獲得具有現代功能的 OpenGL ICD,必須直接從 GPU 供應商的網站下載圖形驅動程式並手動安裝。

關於開發,不必採取額外的步驟。遵循 Windows ABI 規範的所有 C / C++編譯器都附帶了標頭和連結器存根(opengl32.lib),用於構建和連結使用 OpenGL 的可執行檔案。