语义的目的是什么?
如果我有这样的顶点布局:
struct VS_Input
{
float4 position : COLOR;
float4 color : POSITION;
};
我颠倒两个成员的语义真的有关系吗?
如果我必须为每个顶点发送 Direct3D 结构,为什么它不能按原样复制我的数据?
如果我为 direct3D 提供的顶点布局与着色器的布局不匹配,会发生什么情况?例如,如果我将以下顶点传递给上述着色器?
struct MyVertex
{
Vec4 pos;
Vec2 tex;
Vec4 col;
};
在 D3D 文档中,它说会产生警告,并且我的数据将被“重新解释”
这是否意味着像 reinterpret_cast<> 中那样“重新解释”?比如,我的着色器会尝试使用纹理坐标和一半颜色作为着色器中的颜色?或者它会在我的顶点布局中搜索与每个语义匹配的元素并将输入洗牌到正确的位置以使着色器工作?
如果上述情况不成立,那么为什么 D3D 需要明确的顶点布局?