注,一下內容均以D3D12以及相關文檔爲基礎
- 在Direct3D中(也包含其他圖形API如:OpenGL)都需要以頂點數據的輸入作爲整個渲染管線的開始階段,每個頂點都是三維空間中的一個點,光有頂點是無法直接構成三維空間中的面片的,因爲三個點既可以是獨立的點,也可以連成兩個線段,或者是一個三角形,
- 所以需要我們告訴Direct3D,這三個頂點應該以什麼方式進行連接,這就是圖元拓撲(primitive topology)
- 在D3D中,使用
D3D_PRIMITIVE_TOPOLOGY
枚舉來表示圖元拓撲的類型:
typedef
enum D3D_PRIMITIVE_TOPOLOGY
{
D3D_PRIMITIVE_TOPOLOGY_UNDEFINED = 0, //未定義,無效值
D3D_PRIMITIVE_TOPOLOGY_POINTLIST = 1, //點列表,即離散的點
D3D_PRIMITIVE_TOPOLOGY_LINELIST = 2, // 線列表,各個線段分開
D3D_PRIMITIVE_TOPOLOGY_LINESTRIP = 3, // 線條帶,各個線段依次相連
D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4, //三角形列表,各個三角形彼此分離
D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5, //三角形條帶,各個三角形依次相連
D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10, //鄰接線段列表
D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11, //鄰接線條帶
D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12, //鄰接三角形列表
D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13, // 鄰接三角形條帶
D3D_PRIMITIVE_TOPOLOGY_N_CONTROL_POINT_PATCHLIST = 33, //有N個控制點的面片列表
.
.
.
} D3D_PRIMITIVE_TOPOLOGY;
-
以上只是列舉了部分內容,完整詳細可以參加D3D_PRIMITIVE_TOPOLOGY Enumeration
-
點列表
-
線列表
-
線條帶
- -
三角形列表
-
三角形條帶
-
其他幾種類型不是用於頂點着色器和像素着色器,這裏暫時不進行展示