圖形學基礎概念------圖元拓撲

注,一下內容均以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

  • 點列表
    點列表

  • 線列表
    線列表

  • 線條帶
    -線條帶

  • 三角形列表
    三角形列表

  • 三角形條帶
    三角形條帶

  • 其他幾種類型不是用於頂點着色器和像素着色器,這裏暫時不進行展示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章