在D3D11中是否有与OpenGL glVertexAttrib()相同的东西?

时间:2013-06-23 03:11:57

标签: c++ opengl direct3d vertex-shader

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

D3D11中以下代码的等价物是什么?

glVertexAttribPointer(pos, &pos[0], ...);
glEnableVertexAttribArray(pos);

glVertexAttribPointer(color, NULL, ...);
glDisableVertexAttribArray(color);

glVertexAttrib4fv(color, &defaultColor);

glDrawArrays(...);

2 个答案:

答案 0 :(得分:1)

为输入汇编程序创建输入布局时,您可以指定是为每个顶点还是每个实例提供属性:

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

您可以基于每个实例为所有顶点提供常量颜色。

答案 1 :(得分:0)

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

<{3}}中的教程7“纹理映射和常量缓冲区”描述了将常量传递给着色器的一般方法。