DirectX-传递到顶点着色器的顶点的维度

DirectX-传递到顶点着色器的顶点的维度,directx,Directx,我正在努力学习directX编程。看看不同的教程,我发现一些关于顶点的东西有点令人困惑 我知道directX使用具有四个元素(x、y、z、w)的顶点。我看到许多教程(示例)将XMFLOAT3作为顶点位置传递,而忽略了w组件。这是怎么回事?假设passin XMFLOAT3或XMFLOAT4不改变DirectX行为(真?),我应该在顶点着色器中将w设置为1,还是DirectX默认将其设置为1?顶点的内存格式由输入布局描述。为了节省空间,通常将位置设置为3向量,而不是4向量。w始终设置为1 D3D1

我正在努力学习directX编程。看看不同的教程,我发现一些关于顶点的东西有点令人困惑


我知道directX使用具有四个元素(x、y、z、w)的顶点。我看到许多教程(示例)将XMFLOAT3作为顶点位置传递,而忽略了w组件。这是怎么回事?假设passin XMFLOAT3或XMFLOAT4不改变DirectX行为(真?),我应该在顶点着色器中将w设置为1,还是DirectX默认将其设置为1?

顶点的内存格式由输入布局描述。为了节省空间,通常将位置设置为3向量,而不是4向量。w始终设置为1

D3D11_INPUT_ELEMENT_DESC[] =
{
    { "SV_Position", 0, DXGI_FORMAT_R32G32B32_FLOAT,    0, D3D11_APPEND_ALIGNED_ELEMENT, D3D11_INPUT_PER_VERTEX_DATA, 0 },
...
};
输入布局未指定的任何元素通常假定为0,但在HLSL中,类似于
mul(float3,float4x4)
的宏已经知道将.w设为隐式1

您应该查看中的VertexTypes.h以了解各种示例