1. 程式人生 > >OpenGl 學習 01 概述與概念

OpenGl 學習 01 概述與概念

OpenGL是一種API,一種可以對圖形硬體裝置特性進行訪問的軟體庫。OpenGL被設計為一個現代化的、硬體無關的介面。

一個用來渲染影象的OpenGL程式需要執行的主要操作如下所示:

(1)從OpenGL的幾何圖元中設定資料,用於構建形狀。

(2)使用不同的著色器(shader)對輸入的圖元資料執行計算操作,判斷他們的位置、顏色,以及其他的渲染屬性。

(3)將輸入圖元的數學描述轉換為與螢幕對應位置的畫素片元(fragment)。這一步也稱為光柵化。

(3)最後,針對光柵化過程產生的每個片元,執行片元著色器(fragment shader),從而決定這個片元的最終顏色和位置。

(4)如果有必要,還需要對每個片元執行一些額外的操作,例如判斷片元對應的物件是否可見,或者將片元的顏色與當前螢幕位置的顏色進行融合。


OpenGL使用客戶端-服務端的形式實現的,我們編寫的應用程式可以看做客戶端,而計算機圖形硬體廠商提供的OpenGL實現可以看做服務端。

渲染render:表示計算機從模型建立最終影象的過程。OpenGL只是一種渲染系統,還有許多其他的渲染系統。OpenGL是基於光柵化的系統,但是也有別的方法用於生成影象,例如光線追蹤(ray tracing)。

模型(model)或者場景物件,是通過幾何圖元,例如點、線和三角形來構建的,而圖元與模型的頂點(vertex)也存在著各種對應的關係。

著色器:它是圖形硬體裝置所執行的一類特殊函式,理解著色器最好的方法是把它看做專門為圖形處理單元(GPU)編譯的一種小型程式。OpenGL在其內部包含了所有的編譯器工具,可以直接從著色器原始碼建立GPU所需的編譯程式碼並執行。在OpenGL中會用到四種不同的著色階段(shader stage)。其中最常用的包括頂點著色器(vertex shader)以及片元著色器,前者用於處理頂點資料,後者用於處理光柵化後的片元資料。

最終生成的影象包含了螢幕上繪製的素有畫素點。畫素(pixel)是顯示器上最小的可見單元。計算機系統將所有的畫素儲存到幀快取(framebuffer)當中,後者是由圖形硬體裝置管理的一塊獨立記憶體區域,可以直接對映到最終的顯示器上。