注,一下内容均以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
-
点列表
-
线列表
-
线条带
- -
三角形列表
-
三角形条带
-
其他几种类型不是用于顶点着色器和像素着色器,这里暂时不进行展示