1. 程式人生 > >第四節:繪製第一個三角形

第四節:繪製第一個三角形

在OpenGL中,任何事物都在你3D空間中,而螢幕和視窗確實2D畫素陣列,這導致OpenGL的大部分工作都是關於把3D座標轉變為適應你螢幕的2D畫素。3D座標轉為2D座標的處理過程是由OpenGL的圖形渲染管線管理的。

圖形渲染管線可以被劃分為兩個主要部分:

  • 第一部分把3D座標轉化為2D座標
  • 第二部分把2D座標轉變為實際的有顏色的畫素;

2D座標和畫素區別:2D座標精確表示一個點在2D空間中的位置;2D畫素是這個點的近似值,2D畫素受到螢幕/視窗解析度的限制.

圖形渲染管線:

圖形渲染管線接受一組3D座標,然偶把它們轉化為螢幕上的有色2D畫素輸出。圖形渲染管線可以被劃分為幾個階段,每個階段會把前一個階段的輸出作為輸入

所有的這些階段都是高度專門化的(它們都有一個特定的函式),並且很容易並行執行顯示卡上的小核心為每一個(渲染管線)階段執行各自的小程式,從而在圖形渲染管線中快速處理資料,這些小程式叫做著色器

下圖為圖形渲染管線:藍色部分為可自定義著色器

  • 首先,我們以陣列的形式傳遞三個3D座標作為圖形渲染管線的輸入,用來表示一個三角形;實際上頂點資料是用頂點屬性表示的,可以包含任何我們想用的資料(例如一個頂點的位置,顏色,法線向量,紋理座標)等。
  • 第一部分是頂點著色器,以每一個單獨的頂點作為輸入;頂點著色器的目的主要是執行3D座標變換。同時允許對頂點屬性進行一些基本處理。

fda

fdas

fdsa

asdfs