图形学基础概念------图元拓扑

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

  • 点列表
    点列表

  • 线列表
    线列表

  • 线条带
    -线条带

  • 三角形列表
    三角形列表

  • 三角形条带
    三角形条带

  • 其他几种类型不是用于顶点着色器和像素着色器,这里暂时不进行展示

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