在 Win32 API 中,D3D10_INPUT_CLASSIFICATION 枚举用于定义输入布局中的输入槽的分类方式。这个枚举是与顶点着色器输入签名相关的。以下是 D3D10_INPUT_CLASSIFICATION 枚举的定义:
typedef enum D3D10_INPUT_CLASSIFICATION {
    D3D10_INPUT_PER_VERTEX_DATA  = 0,
    D3D10_INPUT_PER_INSTANCE_DATA = 1
} D3D10_INPUT_CLASSIFICATION;

这个枚举有两个成员:

  •  D3D10_INPUT_PER_VERTEX_DATA: 表示输入数据在每个顶点之间变化。这是最常见的情况,适用于顶点数据。

  •  D3D10_INPUT_PER_INSTANCE_DATA: 表示输入数据在每个实例之间变化。这通常用于实例化绘制,其中每个实例有自己独特的输入数据。


在定义顶点布局(Vertex Layout)时,通过使用这个枚举可以指定输入槽的分类方式,以确定数据是如何传递到顶点着色器中的。例如,以下是如何创建一个包含位置和颜色信息的顶点布局:
D3D10_INPUT_ELEMENT_DESC layout[] = {
    { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 },
    { "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D10_INPUT_PER_VERTEX_DATA, 0 }
};

在这个例子中,"POSITION" 和 "COLOR" 分别是顶点结构体中的成员名,D3D10_INPUT_PER_VERTEX_DATA 表示这些数据在每个顶点之间变化。这个顶点布局可以通过调用 CreateInputLayout 函数与顶点着色器关联。


转载请注明出处:http://www.pingtaimeng.com/article/detail/25540/Win32 API/D3d10.h/D3D10_INPUT_CLASSIFICATION