1. 程式人生 > >三維圖形顯示流程

三維圖形顯示流程

目的:將三維場景轉化為螢幕二維影象。
組成:可分為三個階段

  1. application階段,cpu處理
    (1). 資料準備。一個是模型載入(mesh,texture等);二是攝像機(位置,朝向等);三是光源(位置,型別等)。
    (2). 裁剪和剔除。
    (3). 計算模型檢視矩陣。
    (4). 設定渲染狀態,呼叫DrawCall。
  2. Geometry階段,逐頂點逐多邊形圖元操作,把頂點座標變換到有深度的螢幕空間再交給光柵器處理。
    (1). 模型變換,將模型由模型空間變換為世界空間。
    (2). 檢視變換,將模型從世界空間變換到視點空間(camera位於原點)。
    (3). 頂點著色,修改頂點屬性,如通過傳入MVP進行頂點空間變換(位置屬性),逐頂點光照(顏色屬性),紋理座標變換(uv屬性)。
    (4). 曲面細分著色。
    (5). 幾何著色
    (6). 投影,得到歸一化裝置座標NDC。
    (7). 裁剪剔除。
    (8). 螢幕對映。
  3. 光柵化,對得到的圖元各個頂點進行插值(z-buffer,法線方向,紋理座標,顏色等)產生螢幕畫素,渲染出最終影象。光柵化決定每個圖元中的哪些畫素應該被繪製到螢幕上。
    (1). 三角形設定,對三個頂點插值計算三角形邊上的畫素。
    (2). 三角形遍歷,掃描三角形邊上的畫素來插值計算整個三角形內的畫素。
    (3). 片元著色,逐個片元進行著色計算(即逐個畫素光照),經模板測試,深度測試,alpha混合等,將結果(一系列顏色值)存放到幀緩衝,供GPU進行螢幕更新(常使用雙緩衝繪製)。