1

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

谢谢!

4

1 回答 1

1

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

于 2015-07-18T20:38:41.067 回答