Publicitad R▼
⇨ definición de OpenGL (Wikipedia)
Publicidad ▼
Wikipedia
原作者 | Silicon Graphics |
---|---|
開發者 | Khronos Group |
穩定版本 | 4.2/ 2011年8月8日 |
作業系統 | 跨平台 |
類型 | API |
許可協議 | 多種 |
網站 | http://www.opengl.org |
OpenGL(全寫Open Graphics Library)是個定義了一個跨程式語言、跨平台的程式介面(Application programming interface)的規格,它用於生成二維、三維圖像。這個接口由近三百五十個不同的函數調用組成,用來從簡單的圖形位元繪製複雜的三維景象。而另一種程式介面系統是僅用於Microsoft Windows上的Direct3D。OpenGL常用於CAD、虛擬實境、科學視覺化程式和電子遊戲開發。
OpenGL的高效實現(利用了圖形加速硬件)存在於Windows,很多UNIX平台和MacOS。這些實現一般由顯示裝置廠商提供,而且非常依賴於該廠商提供的硬體。開放原始碼函式庫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標準允許它們通過「擴展」的方法提供所擴展的功能。然後一個擴展就分成兩部分發布:包含擴展函數原型的頭文件和作為廠商的設備驅動。每個廠商有一個用於命名它們的新函數和常量的字母縮寫。例如,NVIDIA的縮寫(「NV」)用於定義它們的專有函數「glCombinerParameterfvNV()」和它們的常量「GL_NORMAL_MAP_NV」。如果多於一個廠商同意實現相同的擴展功能,那麼就用縮寫「EXT」。進一步,架構評審委員會可能「祝福」這個擴展,那麼這就被稱為一個「標準擴展」,使用縮寫「ARB」。第一個ARB擴展是GL_ARB_multitexture。根據官方擴展提升路徑,多紋理不再是可選實現的ARB擴展,它已經是OpenGL 1.4以後的核心API的一部分。
幾個庫建立在OpenGL之上,提供了OpenGL本身沒有的功能:
特別是,OpenGL Performer庫——由SGI開發並可以在IRIX、Linux和Microsoft Windows的一些版本上使用,構建於OpenGL,可以建立實時可視化仿真程序。
當開發者需要使用最新的OpenGL擴展時,他們往往需要使用GLEW或者是GLEE庫提供的功能,可以在程序的運行期判斷當前硬件是否支持相關的擴展,防止程序崩潰甚至造成硬件損壞。
為了加強它的多語言和多平台特性,已經用很多語言開發了OpenGL的各種綁定和移植。最值得注意的是,Java3D庫已經可以利用OpenGL(另一個選擇可能是DirectX)作為它的硬件加速了。OpenGL官方網頁 [1] 列出了用於Java、Fortran 90、Perl、Pike、Python、Ada和Visual Basic的多個綁定。
OpenGL被設計為只有輸出的,所以它只提供渲染功能。核心API沒有窗口系統、音頻、打印、鍵盤/鼠標或其他輸入設備的概念。雖然這一開始看起來像是一種限制,但它允許進行渲染的代碼完全獨立於他運行的操作系統,允許跨平台開發。然而,有些整合於原生窗口系統的東西需要允許和宿主系統交互。這通過下列附加API實現:
另外,GLUT庫能夠以可移植的方式提供基本的窗口功能。
OpenGL進化自(而且風格很相似)SGI的早期3D接口IRIS GL。IRIS GL的一個限制是它只能訪問底層硬件提供的特性。如果圖形硬件不支持例如紋理映射這樣的功能,那麼應用程序就不能使用它。OpenGL通過在軟件上對硬件不支持的特性提供支持的方法克服了這個問題,允許應用程序在相對低配置的系統上使用高級的圖形特性。Fahrenheit項目是Microsoft和SGI之間的聯合行動,為了統一OpenGL和Direct3D接口的目的。它一開始提出了一些把規則帶給交互3D計算機圖形API世界的承諾,但因為SGI的財政限制,這個項目後來被放棄了。
2002年微軟的DirectX 9提出了全新的Shader繪圖功能以及高階著色語言 (HLSL),OpenGL霸主地位開始被瓦解。這使得3DLabs了解到必須開發全新的OpenGL 2.0版本,但僅加入支援GLSL的功能。2006年Khronos接手OpenGL,立刻著手發展Longs Peak與Mount Evans。2008年推出OpenGL 3,但評價普遍不高。
2010年3月10日, OpenGL同時推出了3.3和4.0版本,同年7月26日又發布了4.1版本。2011年8月8日發布4.2版本。
支持的顯卡: Nvidia GeForce 400 series, Nvidia GeForce 500 series, Nvidia GeForce 600 series, ATI Radeon HD 5000 series, AMD Radeon HD 6000 Series, AMD Radeon HD 7000 Series
支持Shaders原子計數器和加載/存儲/原子 讀-修改-寫操作的單級紋理着色器。 捕捉GPU-tessellated幾何變換反饋的結果繪製的多個實例,使複雜的對象進行有效的重新定位和複製。 支持修改任意子集的壓縮紋理,而無需重新下載整個GPU的紋理, 顯著的性能改進。 支持包裝成一個單一的32位值顯著降低內存存儲和頻寬的高效着色處理多個8位和16位值。
s3c6410支持openGL1.1/2.0 iphone 2就是使用的這款芯片
Publicidad ▼
Contenido de sensagent
computado en 0,031s