手动填充顶点结构实现对齐

Padding vertex structure manually to achieve allignment

将顶点数据传递给着色器时,对顶点结构应用填充以实现对齐(16 字节)是否明智,或者这是硬件正在执行的操作吗?

例如这两个顶点结构是否同样有效?

struct Vertex44    // <<----- NO PADDING
{
    XMFLOAT3    position;
    XMFLOAT3    normal;
    XMFLOAT2    texCoord;
    XMFLOAT3    tangent;
};

struct Vertex48   // <<----- WITH PADDING
{
    XMFLOAT3    position;
    XMFLOAT3    normal;
    XMFLOAT2    texCoord;
    XMFLOAT3    tangent;
    float       padding;
};

谢谢!

对于顶点格式,如果将步长的总大小保持在恰好 32 字节或恰好 64 字节,则大多数硬件的性能都会得到提高。这只会影响输入汇编器布局引擎。一旦数据进入 GPU 管道,驱动程序和运行时就会根据硬件的需要保持几乎所有内容对齐。