将顶点数据传递到着色器时,将填充应用于顶点结构以实现对齐(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;
};
谢谢!
答案 0 :(得分:1)
对于顶点格式,如果将步幅的总大小精确地保持为32字节或正好为64字节,则可以在大多数硬件上获得性能提升。这只会影响Input Assembler布局引擎。一旦数据在GPU管道中,驱动程序&amp;运行时保持几乎所有对齐硬件所需的内容。