D3D11中是否有类似于OpenGL的glVertexAttrib()函数?

3

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

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

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

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

glVertexAttrib4fv(color, &defaultColor);

glDrawArrays(...);

为什么要为每个顶点提供一个恒定的顶点属性? - Vertexwahn
我可以使用一个着色器和一个数据集,即使该数据集不完全满足着色器的输入签名。 - CuriousGeorge
2个回答

2
创建输入布局时,您可以指定属性是按顶点还是按实例提供的,与输入装配器相关。请注意保留HTML标签,此处不需要进行解释。
typedef enum D3D11_INPUT_CLASSIFICATION { 
  D3D11_INPUT_PER_VERTEX_DATA    = 0,
  D3D11_INPUT_PER_INSTANCE_DATA  = 1
} D3D11_INPUT_CLASSIFICATION;

您可以按实例为所有顶点提供恒定的颜色。

这是一个好主意,不知道从多目标引擎的角度来看,与glVertexAttrib的兼容性如何。 - Philip Guin

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接