時間:2022-12-30 18:30:02 | 來源:信息時代
時間:2022-12-30 18:30:02 來源:信息時代
開放的圖形程序接口 : 一種三維圖形開發(fā)標準,是從事三維圖形開發(fā)工作的必要工具,其穩(wěn)定性、可靠性、可擴展性等特點,賦予了其強大的生命力和應(yīng)用前景,OpenGL已經(jīng)廣泛應(yīng)用于在CAD/CAM/CAE、醫(yī)學圖像處理、虛擬現(xiàn)實、娛樂、廣告等領(lǐng)域。
OpenGL是個專業(yè)的3D程序接口,是一個功能強大,調(diào)用方便的底層3D圖形庫。OpenGL的前身是SGI公司為其圖形工作站開發(fā)的IRIS GL。IRIS GL是一個工業(yè)標準的3D圖形軟件接口,功能雖然強大但是移植性不好,于是SGI公司便在IRIS GL的基礎(chǔ)上開發(fā)了OpenGL。雖然DirectX在家用市場全面領(lǐng)先,但在專業(yè)高端繪圖領(lǐng)域,OpenGL是不能被取代的主角。
OpenGL是個與硬件無關(guān)的軟件接口,可以在不同的平臺如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之間進行移植。因此,支持OpenGL的軟件具有很好的移植性,可以獲得非常廣泛的應(yīng)用。由于OpenGL是3D圖形的底層圖形庫,沒有提供幾何實體圖元,不能直接用以描述場景。但是,通過一些轉(zhuǎn)換程序,可以很方便地將AutoCAD、3DS等3D圖形設(shè)計軟件制作的DFX和3DS模型文件轉(zhuǎn)換成OpenGL的頂點數(shù)組。
在OpenGL的基礎(chǔ)上還有Open Inventor、Cosmo3D、Optimizer等多種高級圖形庫,適應(yīng)不同應(yīng)用。其中,Open Inventor應(yīng)用最為廣泛。該軟件是基于OpenGL面向?qū)ο蟮墓ぞ甙?提供創(chuàng)建交互式3D圖形應(yīng)用程序的對象和方法,提供了預(yù)定義的對象和用于交互的事件處理模塊,創(chuàng)建和編輯3D場景的高級應(yīng)用程序單元,有打印對象和用其他圖形格式交換數(shù)據(jù)的能力。
OpenGL的發(fā)展一直處于一種較為遲緩的態(tài)勢,每次版本的提高新增的技術(shù)很少,大多只是對其中部分做出修改和完善。1992年7月,SGI公司發(fā)布了OpenGL的1.0版本,隨后又與微軟公司共同開發(fā)了Windows NT版本的OpenGL,從而使一些原來必須在高檔圖形工作站上運行的大型3D圖形處理軟件也可以在微機上運用。1995年OpenGL的1.1版本面市,該版本比1.0的性能有許多提高,并加入了一些新的功能。其中包括改進打印機支持,在增強元文件中包含OpenGL的調(diào)用,頂點數(shù)組的新特性,提高頂點位置、法線、顏色、色彩指數(shù)、紋理坐標、多邊形邊緣標識的傳輸速度,引入了新的紋理特性等。OpenGL 1.5又新增了OpenGL Shading Language,該語言是OpenGL 2.0的底核,用于著色對象、頂點著色以及片斷著色技術(shù)的擴展功能。
OpenGL 2.0標準的主要制訂者并非原來的SGI,而是逐漸在ARB中占據(jù)主動地位的3Dlabs。2.0版本首先要做的是與舊版本之間的完整兼容性,同時在頂點與像素及內(nèi)存管理上與DirectX共同合作以維持均勢。OpenGL 2.0將由OpenGL 1.3的現(xiàn)有功能加上與之完全兼容的新功能所組成。借此可以對在ARB停滯不前時代各家推出的各種糾纏不清的擴展指令集做一次徹底地精簡。此外,硬件可編程能力的實現(xiàn)也提供了一個更好的方法以整合現(xiàn)有的擴展指令。
1. OpenGL的圖形處理功能
OpenGL實際上是一個開放的三維圖形軟件包,它獨立于窗口系統(tǒng)和操作系統(tǒng),以它為基礎(chǔ)開發(fā)的應(yīng)用程序可以十分方便地在各種平臺間移植;OpenGL可以與Visual C++緊密接口,便于實現(xiàn)機械手的有關(guān)計算和圖形算法,可保證算法的正確性和可靠性; OpenGL使用簡便,效率高。它具有七大功能:
(1)建模: OpenGL圖形庫除了提供基本的點、線、多邊形的繪制函數(shù)外,還提供了復(fù)雜的三維物體(球、錐、多面體、茶壺等)以及復(fù)雜曲線和曲面(如Bezier、Nurbs等曲線或曲面)繪制函數(shù)。
(2)變換:OpenGL圖形庫的變換包括基本變換和投影變換。基本變換有平移、旋轉(zhuǎn)、變比、鏡像四種變換,投影變換有平行投影(又稱正射投影)和透視投影兩種變換。其變換方法與機器人運動學中的坐標變換方法完全一致,有利于減少算法的運行時間,提高三維圖形的顯示速度。
(3)顏色模式設(shè)置: OpenGL顏色模式有兩種,即RGBA模式和顏色索引(Color Index)。
(4) 光照和材質(zhì)設(shè)置: OpenGL光有輻射光(emitted light)、環(huán)境光(ambient light)、漫反射光(diffuse light)和鏡面光(specular light)。材質(zhì)是用光反射率來表示。場景(scene)中物體最終反映到人眼的顏色是光的紅綠藍分量與材質(zhì)紅綠藍分量的反射率相乘后形成的顏色。
(5)紋理映射(texture mapping): 利用OpenGL紋理映射功能可以十分逼真地表達物體表面細節(jié)。
(6)位圖顯示和圖像增強: 圖像功能除了基本的拷貝和像素讀寫外,還提供融合(blending)、反走樣(antialiasing)和霧(fog)的特殊圖像效果處理。以上三條可使被仿真物更具真實感,增強圖形顯示的效果。
(7)雙緩存(double buffering)動畫: 雙緩存即前臺緩存和后臺緩存,簡而言之,后臺緩存計算場景、生成畫面,前臺緩存顯示后臺緩存已畫好的畫面。此外,利用OpenGL還能實現(xiàn)深度暗示(depth cue)、運動模糊(motion blur)等特殊效果。從而實現(xiàn)了消隱算法。
OpenGL圖形庫一共有100多個函數(shù)。其中核心函數(shù)有115個,它們是最基本的函數(shù),其前綴是gl,OpenGL實用庫(OpenGL utility library,GLU)的函數(shù)功能更高一些,如繪制復(fù)雜的曲線曲面、高級坐標變換、多邊形分割等,共有43個,前綴為glu; OpenGL輔助庫的函數(shù)是一些特殊的函數(shù),包括簡單的窗口管理、輸入事件處理、某些復(fù)雜三維物體繪制等函數(shù),共有31個,前綴為aux。此外,還有六個WGL函數(shù)非常重要,專門用于OpenGL和Windows 95窗口系統(tǒng)的連接,其前綴為wgl,主要用于創(chuàng)建和選擇圖形操作描述表(rendering contexts)以及在窗口內(nèi)任一位置顯示字符位圖。這些功能是Windows 95對OpenGL的唯一補充。
另外,還有五個Win32函數(shù)用來處理像素格式(pixel formats)和雙緩存。由于它們是對Win32系統(tǒng)的擴展,因此不能應(yīng)用在其他OpenGL平臺上。
2. OpenGL及其他圖形處理中的常用術(shù)語
(1)走樣(aliasing):指一種渲染技術(shù),把需要進行渲染的圖元的顏色賦值給像素點,不論圖元是覆蓋了整個像素區(qū)域還是僅僅覆蓋了一部分。走樣的結(jié)果將產(chǎn)生鋸齒狀的邊緣,或鋸齒狀圖形。
(2)第四種顏色分量(alpha): alpha顏色分量并不直接顯示。其典型的應(yīng)用是控制顏色的混合。習慣上,OpenGL的alpha分量對應(yīng)著不透明的程度,也就是說alpha值為1.0表示完全不透明,而0.0表示完全透明。
(3)動畫(animation):該過程是指對視景不斷渲染,以足夠快的速度平穩(wěn)地改變視點或(和)物體位置來實現(xiàn)運動的幻覺。OpenGL的動畫幾乎全部是通過雙緩沖器來實現(xiàn)的。
(4)反走樣(antialiasing): 指一種渲染技術(shù),根據(jù)需要渲染的圖元所覆蓋的像素區(qū)域大小來分配像素顏色。反模糊化渲染減少或消除了模糊化渲染產(chǎn)生的鋸齒圖形。
(5) 特定應(yīng)用裁剪(application-specific clipping): 指在人眼坐標中對相對于某平面的圖元裁剪。該平面由glClipPlane()函數(shù)定義的應(yīng)用程序指定。
(6)位平面(bitplane):與像素一一對應(yīng)所組成的矩形陣列。幀緩沖器由多個位平面組成。
(7)混合(blending): 將兩種顏色分量混成變?yōu)橐环N顏色分量,通常是在這兩個顏色分量之間做線形插值。
(8)布爾運算(Boolean operation): 英國的數(shù)學家布爾在1847年發(fā)明的一種處理二值關(guān)系的邏輯數(shù)學計算法,包括聯(lián)合、相交、相減。在圖形處理操作中引用了這種邏輯運算方法以使簡單的基本圖形組合產(chǎn)生新的形體。并由二維布爾運算發(fā)展到三維圖形的布爾運算。
(9)緩沖(buffer): 又稱緩沖器,用于存儲單一變量(如深度或綠色)或單一索引(如顏色索引或模板索引)的一組位平面。在一些情況下,紅色、綠色、藍色和alpha各單緩沖器統(tǒng)一為一個顏色緩沖器。
(10)客戶(client): 指發(fā)送OpenGL命令的計算機,發(fā)出OpenGL命令的計算機可以通過網(wǎng)絡(luò)連接,在另一臺計算機上執(zhí)行命令,或者也可在本地計算機上執(zhí)行。
(11)客戶內(nèi)存(client memory): 客戶計算機的主內(nèi)存(程序變量存儲其中)。
(12)裁剪坐標(clip coordinates): 在透視分割之前,投影矩陣變換之后的坐標系。視圖體的剪輯是在裁剪坐標系中進行的,但特定應(yīng)用的裁剪并非如此。
(13)裁剪(clipping): 指除去幾何圖元中裁剪平面定義的半空間之外的部分的過程。對于點,則簡單地擦除定義空間外的點;對于一條直線或多邊形,除擦除定義空間外的部分之外,還要附加生成必要的頂點,以保持裁剪的半空間內(nèi)圖元的完整性。幾何圖元和當前的光柵位置(當有定義時)常常按照由左部、右部、底部、頂部、近處和遠處的視圖體的平面來裁剪。應(yīng)用程序中,可以指定可選擇的、應(yīng)用于人眼坐標的特定應(yīng)用裁剪平面。
關(guān)鍵詞:數(shù)據(jù),程序,圖形
微信公眾號
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。