OpenGL基礎圖形程式設計(二)OpenGL概念建立

heyuchang666發表於2016-04-05

OpenGL基本理解


  OpenGL是一個與硬體圖形發生器的軟體介面,它包括了100多個圖形操作函式,開發者可以利用這些函式來構造景物模型、進行三維圖形互動軟體的開發。正如上一章所述,OpenGL是一個高效能的圖形開發軟體包。OpenGL支援網路,在網路系統中使用者可以在不同的圖形終端上執行程式顯示圖形。 OpenGL作為一個與硬體獨立的圖形介面,它不提供與硬體密切相關的裝置操作函式,同時,它也不提供描述類似於飛機、汽車、分子形狀等複雜形體的圖形操作函式。使用者必須從點、線、面等最基本的圖形單元開始構造自己的三維模型。當然,象OpenInventor那樣更高一級的基於OpenGL的三維圖形建模開發軟體包將提供方便的工具。因此OpenGL的圖形操作函式十分基本、靈活。例如OpenGL中的模型繪製過程就多種多樣,內容十分豐富,OpenGL提供了以下的對三維物體的繪製方式:
  • 網格線繪圖方式wireframe
    這種方式僅繪製三維物體的網格輪廓線。
  • 深度優先網格線繪圖方式depth_cued
    用網格線方式繪圖,增加模擬人眼看物體一樣,遠處的物體比近處的物體要暗些。
  • 反走樣網格線繪圖方式antialiased
    用網格線方式繪圖,繪圖時採用反走樣技術以減少圖形線條的參差不齊。
  • 平面消隱繪圖方式flat_shade
    對模型的隱藏面進行消隱,對模型的平面單元按光照程度進行著色但不進行光滑處理。
  • 光滑消隱繪圖方式smooth_shade
    對模型進行消隱按光照渲染著色的過程中再進行光滑處理,這種方式更接近於現實。
  • 加陰影和紋理的繪圖方式shadows、textures
    在模型表面貼上紋理甚至於加上光照陰影,使得三維景觀象照片一樣。
  • 運動模糊的繪圖方式motion-blured
    模擬物體運動時人眼觀察所感覺的動感現象。
  • 大氣環境效果atmosphere-effects
    在三維景觀中加入如霧等大氣環境效果,使人身臨其境。
  • 深度域效果depth-of-effects
    類似於照相機鏡頭效果,模型在聚焦點處清晰,反之則模糊。

  這些三維物體繪圖和特殊效果處理方式,說明OpenGL已經能夠模擬比較複雜的三維物體或自然景觀,這就是我們所面對的OpenGL。


2.2、OpenGL工作流程
  整個OpenGL的基本工作流程如下圖:
  其中幾何頂點資料包括模型的頂點集、線集、多邊形集,這些資料經過流程圖的上部,包括運算器、逐個頂點操作等;影像資料包括象素集、影像集、點陣圖集等,影像象素資料的處理方式與幾何頂點資料的處理方式是不同的,但它們都經過光柵化、逐個片元(Fragment)處理直至把最後的光柵資料寫入幀緩衝器。在OpenGL中的所有資料包括幾何頂點資料和象素資料都可以被儲存在顯示列表中或者立即可以得到處理。OpenGL中,顯示列表技術是一項重要的技術。
  OpenGL要求把所有的幾何圖形單元都用頂點來描述,這樣運算器和逐個頂點計算操作都可以針對每個頂點進行計算和操作,然後進行光柵化形成圖形碎片;對於象素資料,象素操作結果被儲存在紋理組裝用的記憶體中,再象幾何頂點操作一樣光柵化形成圖形片元。

  整個流程操作的最後,圖形片元都要進行一系列的逐個片元操作,這樣最後的象素值BZ送入幀緩衝器實現圖形的顯示。


2.3、OpenGL圖形操作步驟
  在上一節中說明了OpenGL的基本工作流程,根據這個流程可以歸納出在OpenGL中進行主要的圖形操作直至在計算機螢幕上渲染繪製出三維圖形景觀的基本步驟:
  1)根據基本圖形單元建立景物模型,並且對所建立的模型進行數學描述(OpenGL中把:點、線、多邊形、影像和點陣圖都作為基本圖形單元)。
  2)把景物模型放在三維空間中的合適的位置,並且設定視點(viewpoint)以觀察所感興趣的景觀。
  3)計算模型中所有物體的色彩,其中的色彩根據應用要求來確定,同時確定光照條件、紋理貼上方式等。
  4)把景物模型的數學描述及其色彩資訊轉換至計算機螢幕上的象素,這個過程也就是光柵化(rasterization)。
  在這些步驟的執行過程中,OpenGL可能執行其他的一些操作,例如自動消隱處理等。另外,景物光柵化之後被送入幀緩衝器之前還可以根據需要物件素資料進行操作。

相關文章