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

时间:2015-07-18 13:15:26

标签: c++ optimization directx-11 vertex-attributes

将顶点数据传递到着色器时,将填充应用于顶点结构以实现对齐(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;
};

谢谢!

1 个答案:

答案 0 :(得分:1)

对于顶点格式,如果将步幅的总大小精确地保持为32字节或正好为64字节,则可以在大多数硬件上获得性能提升。这只会影响Input Assembler布局引擎。一旦数据在GPU管道中,驱动程序&amp;运行时保持几乎所有对齐硬件所需的内容。