D3D11中是否有与OpenGL glVertexAttrib()等效的工具

Is there an equivalent to OpenGL glVertexAttrib() in D3D11?

本文关键字:工具 glVertexAttrib 是否 OpenGL D3D11      更新时间:2023-10-16

我希望能够为D3D11中的一个顶点属性设置一个常数值。

D3D11中的以下代码等效于什么?

glVertexAttribPointer(pos, &pos[0], ...);
glEnableVertexAttribArray(pos);
glVertexAttribPointer(color, NULL, ...);
glDisableVertexAttribArray(color);
glVertexAttrib4fv(color, &defaultColor);
glDrawArrays(...);

为input Assembler创建输入布局时,可以指定是按顶点还是按实例提供属性:

typedef enum D3D11_INPUT_CLASSIFICATION { 
  D3D11_INPUT_PER_VERTEX_DATA    = 0,
  D3D11_INPUT_PER_INSTANCE_DATA  = 1
} D3D11_INPUT_CLASSIFICATION;

可以在每个实例的基础上为所有顶点提供恒定的颜色。

将glVertexAttrib4fv与glDrawArrays一起使用意味着常量对绘图中的所有顶点都是相同的。

directx-sdk(2010年6月)中的教程7"纹理映射和常量缓冲区"描述了将常量传递到着色器的通用方法。