DirectX Rendering Pipeline / DirectX渲染管线

渲染管线就是在给定一个3D场景和摄像机时,根据摄像机的视角生成一幅2D图像的一系列步骤,类似于流水线作业。 一、IA-从内存读取几何数据(顶点和索引) ID3D10InputLayout 输入布局 1. 创建一个D3D1_INPUT_ELEMENT_DESC结构体 2. 调用CreateInputLayout方法 ID3D10Buffer 缓冲区 1. 创建一个D3D10_BUFFER_DESC结构体,描述要创建的缓冲区 2. 创建一个D3D10_SUBRESOURCE_DATA,指定缓冲区的初始化数据 3. 调用CreateBuffer方法 创建完顶点缓冲区(通过指定bindflag创建不同类型的缓冲区),需要绑定到设备的输入槽上(input slot),这样的话顶点数据就会进入pipeline。 ID3D10Device::IASetVertexBuffers(…) 把顶点缓冲区指定好输入槽只是绘制前的准备工作,需要调用ID3DDevice::Draw方法来进行绘制 图元拓补(Primitive Topology),顶点缓冲区只是一个顶点列表,设备不知道如何解释这些顶点,这就需要设置图元拓补来告诉Device如何解释这些顶点来构成图元,IASetPrimitiveTopology() typedef enum D3D10_PRIMITIVE_TOPOLOGY { D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED = 0, D3D10_PRIMITIVE_TOPOLOGY_POINTLIST = 1, D3D10_PRIMITIVE_TOPOLOGY_LINELIST = 2, D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP = 3, D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,  //三角形列表,每三个顶点构成一个三角形 D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5, D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10, D3D10_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11, D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12, D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ…