OpenGL基礎圖形編程 – Windows NT環境下的OpenGL

來源:互聯網
上載者:User

3.1、Windows NT下的OpenGL函數
  如前面的章節所述,Windows NT下的OpenGL同樣包含100多個庫函數,這些函數都按一定的格式來命名,即每個函數都以gl開頭。Windows NT下的OpenGL除了具有基本的OpenGL函數外,還支援其他四類函數:

相應函數 具體說明
OpenGL實用庫 43個函數,每個函數以glu開頭。
OpenGL輔助庫 31個函數,每個函數以aux開頭。
Windows專用庫函數(WGL) 6個函數,每個函數以wgl開頭。
Win32 API函數 5個函數,函數前面沒有專用首碼。

  在OpenGL中有115個核心函數,這些函數是最基本的,它們可以在任何OpenGL的工作平台上應用。這些函數用於建立各種各樣的形體,產生光照效果,進行反走樣以及進行紋理映射,進行投影變換等等。由於這些核心函數有許多種形式並能夠接受不同類型的參數,實際上這些函數可以派生出300多個函數。
  OpenGL的實用函數是比OpenGL核心函數更高一層的函數,這些函數是通過調用核心函數來起作用的。這些函數提供了十分簡單的用法,從而減輕了開發人員的編程負擔。OpenGL的實用函數包括紋理映射、座標變換、多邊形分化、繪製一些如橢球、圓柱、茶壺等簡單多邊形實體(本指南將詳細講述這些函數的具體用法)等。這部分函數象核心函數一樣在任何OpenGL平台都可以應用。
  OpenGL的輔助庫是一些特殊的函數,這些函數本來是用於初學者做簡單的練習之用,因此這些函數不能在所有的OpenGL平台上使用,在Windows NT環境下可以使用這些函數。這些函數使用簡單,它們可以用於視窗管理、輸入輸出處理以及繪製一些簡單的三維形體。為了使OpenGL的應用程式具有良好的移植性,在使用OpenGL輔助庫的時候應謹慎。
  6個WGL函數是用於串連OpenGL與Windows NT的,這些函數用於在Windows NT環境下的OpenGL視窗能夠進行渲染著色,在視窗內繪製位元影像字型以及把文本放在視窗的某一位置等。這些函數把Windows與OpenGL揉合在一起。最後的5個Win32函數用於處理象素儲存格式和雙緩衝區,顯然這些函數僅僅能夠用於Win32系統而不能用於其它OpenGL平台。

3.2、OpenGL準系統
  OpenGL能夠對整個3D 模型進行渲染著色,從而繪製出與客觀世界十分類似的三維景象。另外OpenGL還可以進行三維互動、動作類比等。具體的功能主要有以下這些內容。

  • 模型繪製
    OpenGL能夠繪製點、線和多邊形。應用這些基本的形體,我們可以構造出幾乎所有的3D 模型。OpenGL通常用模型的多邊形的頂點來描述3D 模型。如何通過多邊形及其頂點來描述3D 模型,在指南的在後續章節會有詳細的介紹。
  • 模型觀察
    在建立了三維景物模型後,就需要用OpenGL描述如何觀察所建立的3D 模型。觀察3D 模型是通過一系列的座標變換進行的。模型的座標變換在使觀察者能夠在視點位置觀察與視點相適應的3D 模型景觀。在整個3D 模型的觀察過程中,投影變換的類型決定觀察3D 模型的觀察方式,不同的投影變換得到的3D 模型的景象也是不同的。最後的視窗變換則對模型的景象進行裁剪縮放,即決定整個3D 模型在螢幕上的圖象。

  • 顏色模式的指定
    OpenGL應用了一些專門的函數來指定3D 模型的顏色。程式員可以選擇二個顏色模式,即RGBA模式和顏色表模式。在RGBA模式中,顏色直接由RGB值來指定;在顏色表模式中,顏色值則由顏色表中的一個色彩索引值來指定。程式員還可以選擇平面著色和光滑著色二種著色方式對整個三維景觀進行著色。
  • 光照應用
    用OpenGL繪製的3D 模型必須加上光照才能更加與客觀物體相似。OpenGL提供了管理四種光(輻射光、環境光線、鏡面光和漫反射光)的方法,另外還可以指定模型表面的反射特性。
  • 圖象效果增強
    OpenGL提供了一系列的增強三維景觀的圖象效果的函數,這些函數通過反走樣、混合和霧化來增強圖象的效果。反走樣用於改善圖象中線段圖形的鋸齒而更平滑,混合用於處理模型的半透明效果,霧使得影像從視點到遠處逐漸褪色,更接近於真實。
  • 位元影像和圖象處理
    OpenGL還提供了專門對位元影像和圖象進行操作的函數。
  • 紋理映射
    三維景物因缺少景物的具體細節而顯得不夠真實,為了更加逼真地表現三維景物,OpenGL提供了紋理映射的功能。OpenGL提供的一系列紋理映射函數使得開發人員可以十分方便地把真實圖象貼到景物的多邊形上,從而可以在視窗內繪製逼真的三維景觀。
  • 即時動畫
    為了獲得平滑的動畫效果,需要先在記憶體中產生下一幅圖象,然後把已經產生的圖象從記憶體拷貝到螢幕上,這就是OpenGL的雙緩衝技術(double buffer)。OpenGL提供了雙緩衝技術的一系列函數。
  • 互動技術
    目前有許多圖形應用需要人機互動,OpenGL提供了方便的三維圖形人機互動介面,使用者可以選擇修改三維景觀中的物體。

3.3、Windows NT下OpenGL的結構
  OpenGL的作用機制是客戶(client)/伺服器(sever)機制,即客戶(用OpenGL繪製景物的應用程式)向伺服器(即OpenGL核心)發布OpenGL命令,伺服器則解釋這些命令。大多數情況下,客戶和伺服器在同一機器上運行。正是OpenGL的這種客戶/伺服器機制,OpenGL可以十分方便地在網路環境下使用。因此Windows NT下的OpenGL是網路透明的。正象Windows的圖形裝置介面(GDI)把圖形函數庫封裝在一個動態連結程式庫(Windows NT下的GDI32.DLL)內一樣,OpenGL圖形庫也被封裝在一個動態連結程式庫內(OPENGL32.DLL)。受客戶應用程式調用的OpenGL函數都先在OPENGL32.DLL中處理,然後傳給伺服器WINSRV.DLL。OpenGL的命令再次得到處理並且直接傳給Win32的裝置驅動介面(Device Drive Interface,DDI),這樣就把經過處理的圖形命令送給視頻顯示驅動程式。簡要說明這個過程:
 
圖3-1 OpenGL在Windows NT下運行機制

  在三維圖形加速卡的GLINT圖形加速晶片的加速支援下,二個附加的驅動程式被加入這個過程中。一個OpenGL可安裝客戶驅動程式(Installable Client Driver,ICD)被加在客戶這一邊,一個硬體指定DDI(Hardware-specific DDI)被加在伺服器這邊,這個驅動程式與Wind32 DDI是同一層級的。


圖3-2 在三維圖形加速下OpenGL運行機制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

Tags Index: