頂點處理機制

2021-10-01 14:21:10 字數 1168 閱讀 6838

在計算機體系結構中,管線定義為資料序列並用於處理元素。其中,某一元素的輸出內容將用作下一階段的輸入內容。

相應地,gpu渲染管線接收3d場景的表達內容,並將作為輸入資料。隨後,將計算2d多邊形的畫素顏色,並輸出場景影象。

渲染管線主要由以下各階段組成:

頂點處理階段,光柵化階段,片元處理階段和輸出合併操作

光柵化階段:將根據頂點對多邊形加以整合,並將多個多邊形轉換成片元集合

片元定義為一組資料,並對顏色緩衝區進行更新(顏色緩衝區定義為某一記憶體空間,該空間儲存的是在螢幕上顯示的畫素)

片元處理階段:主要是對各個片元進行操作(如紋理操作),進而通過各種操作確定片元的顏色值。

輸出合併階段:片元與顏色緩衝區中的畫素將進行比較或合併操作,進而更新畫素的顏色值。

其中,頂點和片元處理階段均呈現為可程式設計狀態(處於該階段的相關程式稱為頂點程式和片元程式)。當執行此類程式時,使用者可針對頂點執行任何轉換操作,並可通過各種方式確定片元的顏色值

世界座標:

視見体:

考慮到相機有限的視域範圍,通常無法捕捉到場景中的全部物件。

場景中的可見區域稱為視見体,且通過如下4個引數加以定義,即fovy、aspect、n和f。從形狀上來看,可將視見体視為乙個無限的金字塔物件,其頂點位於原點位置,並採用-z軸作為資深軸向。

fovy:定義了垂直方向上的可見區域;

aspect:表示視見体的寬高比,即視見体的寬度值除以其高度值。

n:定義了原點與近剪裁面之間的距離

f:定於了原點與遠剪裁面之間的距離

注:由fovy和aspect定義的金字塔物件則通過平面z = -n和z=-f進行擷取,擷取後的金字塔物件被稱為視錐體

近剪裁面和遠剪裁面並不符合真實相機或人類視覺系統原理,其存在原因僅出於計算效率考量。

在較為典型的視錐體剔除實現過程中,將在預處理階段計算多邊形網格的包圍盒或包圍球,並於隨後在cpu程式中執行包圍體——視錐體測試。如果包圍體在視錐體的外部,則可丟棄多邊形網格且不會進入渲染管線,視錐體的操作將節省gpu的計算量和減少cpu的開銷,當多邊形網格包含大量的頂點資料時表現的尤為明顯。

注:實際的剪裁操作並未發生於相機空間。在頂點處理階段,投影轉換可視為最後一步操作,該操作將相機空間內的物件轉換至剪裁空間內。隨後剪裁操作將在剪裁空間內完成。

投影矩陣:

投影轉換並不生成2d影象,僅使得場景中的3d物件產生變形效果。

異常處理機制

異常處理的三個步驟 檢查異常,丟擲異常,處理異常 異常處理基本原理 把需要檢測的程式放到try塊中,把異常處理的程式放在catch塊中。如果執行乙個函式出現了異常,可以丟擲異常資訊。然後查詢try塊下面的catch塊是否可以處理該異常。如果該函式不處理該異常,將傳遞給它的上一級函式 呼叫函式 如果它...

Handler處理機制

handler缺點 如果要運送兩種型別的資料 比如乙個bitmap,乙個object 就不能運送,但可以用bunder來傳輸 使用handler的步驟 1 建立乙個handler 2 在需要用到資料傳輸的地方通過handler得到message物件,通過message攜帶要傳輸的資料 3 直接通過h...

異常處理機制

1 c 中異常處理機制使得異常的引發和異常的處理不必在同乙個函式中。2 異常是專門針對抽象程式設計中的一系列錯誤處理的,c 的函式機制是棧結構,先進後出,依次訪問,無法跳躍。3 異常超脫於函式機制,決定了其對函式的跨越式回跳。4 異常跨越函式 普通用法 基本用法 void add int a,int...