三維圖形顯示流程

目的:將三維場景轉化爲屏幕二維圖像。
組成:可分爲三個階段

  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進行屏幕更新(常使用雙緩衝繪製)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章