手动填充顶点结构实现对齐
Padding vertex structure manually to achieve allignment
将顶点数据传递给着色器时,对顶点结构应用填充以实现对齐(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 字节,则大多数硬件的性能都会得到提高。这只会影响输入汇编器布局引擎。一旦数据进入 GPU 管道,驱动程序和运行时就会根据硬件的需要保持几乎所有内容对齐。
将顶点数据传递给着色器时,对顶点结构应用填充以实现对齐(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 字节,则大多数硬件的性能都会得到提高。这只会影响输入汇编器布局引擎。一旦数据进入 GPU 管道,驱动程序和运行时就会根据硬件的需要保持几乎所有内容对齐。