当将顶点数据传递给着色器时,是否明智地将填充应用于顶点结构以实现对齐(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管道中,驱动程序&运行时保持硬件所需的几乎所有内容对齐。