3

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

什么相当于 D3D11 中的以下代码?

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

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

glVertexAttrib4fv(color, &defaultColor);

glDrawArrays(...);
4

2 回答 2

2

在为 Input Assembler 创建输入布局时,您可以指定是否为每个顶点或每个实例提供属性:

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

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

于 2013-06-28T09:59:38.763 回答
0

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

directx sdk(2010 年 6 月)中的教程 7“​​纹理映射和常量缓冲区”描述了将常量传递给着色器的一般方法。

于 2013-06-23T22:23:24.833 回答