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



当将顶点数据传递给着色器时,是否明智地将填充应用于顶点结构以实现对齐(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字节,则在大多数硬件上确实可以获得性能改进。这只影响Input Assembler布局引擎。一旦数据在GPU管道中,驱动程序&运行时保持硬件所需的几乎所有内容对齐。

最新更新