OpenGL
OpenGL |
OpenGL(英語:Open Graphics Library,譯名:開放圖形庫或者「開放式圖形庫」)是用於渲染2D、3D矢量圖形的跨語言、跨平台的應用程序編程接口(API)。這個接口由近350個不同的函數調用組成,用來繪製從簡單的圖形比特到複雜的三維景象。而另一種程序接口系統是僅用於Microsoft Windows上的Direct3D。OpenGL常用於CAD、虛擬現實、科學可視化程序和電子遊戲開發。OpenGL的高效實現(利用了圖形加速硬件)存在於Windows,部分UNIX平台和Mac OS。這些實現一般由顯示設備廠商提供,而且非常依賴於該廠商提供的硬件。開放源代碼庫Mesa是一個純基於軟件的圖形API,它的代碼兼容於OpenGL。但是,由於許可證的原因,它只聲稱是一個「非常相似」的API。OpenGL規範由1992年成立的OpenGL架構評審委員會(ARB)維護。ARB由一些對創建一個統一的、普遍可用的API特別感興趣的公司組成。根據OpenGL官方網站,2002年6月的ARB投票成員包括3Dlabs、Apple Computer、ATI Technologies、Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和Sun Microsystems,Microsoft曾是創立成員之一,但已於2003年3月退出。
目錄
簡介
OpenGL(英語:Open Graphics Library,譯名:開放圖形庫或者「開放式圖形庫」)是用於渲染2D、3D矢量圖形的跨語言、跨平台的應用程序編程接口(API)。這個接口由近350個不同的函數調用組成,用來從簡單的圖形比特繪製複雜的三維景象。而另一種程序接口系統是僅用於Microsoft Windows上的Direct3D。OpenGL常用於CAD、虛擬實境、科學可視化程序和電子遊戲開發。OpenGL的高效實現(利用了圖形加速硬件)存在於Windows,部分UNIX平台和Mac OS。這些實現一般由顯示設備廠商提供,而且非常依賴於該廠商提供的硬件。開放源代碼庫Mesa是一個純基於軟件的圖形API,它的代碼兼容於OpenGL。但是,由於許可證的原因,它只聲稱是一個「非常相似」的API。OpenGL規範由1992年成立的OpenGL架構評審委員會(ARB)維護。ARB由一些對創建一個統一的、普遍可用的API特別感興趣的公司組成。根據OpenGL官方網站,2002年6月的ARB投票成員包括3Dlabs、Apple Computer、ATI Technologies、Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和Sun Microsystems,Microsoft曾是創立成員之一,但已於2003年3月退出。
評價
OpenGL的API定義了若干可被客戶端程序調用的函數,以及一些具名整型常量(例如,常量GL_TEXTURE_2D對應的十進制整數為3553)。雖然這些函數的定義表面上類似於C編程語言,但它們是語言獨立的。因此,OpenGL有許多語言綁定,值得一提的包括:JavaScript綁定的WebGL(基於OpenGL ES 2.0在Web瀏覽器中的進行3D渲染的API);C綁定的WGL、GLX和CGL;iOS提供的C綁定;Android提供的Java和C綁定。OpenGL不僅語言無關,而且平台無關。規範隻字未提獲得和管理OpenGL上下文相關的內容,而是將這些作為細節交給底層的窗口系統。出於同樣的原因,OpenGL純粹專注於渲染,而不提供輸入、音頻以及窗口相關的API。OpenGL是一個不斷進化的API。新版OpenGL規範會定期由Khronos Group發布,新版本通過擴展API來支持各種新功能。每個版本的細節由Khronos Group的成員一致決定,包括顯卡廠商、操作系統設計人員以及類似Mozilla和谷歌的一般性技術公司。除了核心API要求的功能之外,GPU供應商可以通過擴展的形式提供額外功能。擴展可能會引入新功能和新常量,並且可能放鬆或取消現有的OpenGL函數的限制。然後一個擴展就分成兩部分發布:包含擴展函數原型的頭文件和作為廠商的設備驅動。供應商使用擴展公開自定義的API而無需獲得其他供應商或Khronos Group的支持,這大大增加了OpenGL的靈活性。OpenGL Registry負責所有擴展的收集和定義。 [1]