Заполнение структуры вершин вручную для достижения выравнивания

Передавая данные вершин в ваши шейдеры, целесообразно ли применять выравнивание к вашей структуре вершин для достижения выравнивания (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

Решение

Для вершинных форматов вы получаете повышение производительности на большинстве аппаратных средств, если сохраняете общий размер шага ровно 32 байта или ровно 64 байта. Это влияет только на механизмы компоновки Input Assembler. Когда данные находятся в конвейере графического процессора, драйвер & во время выполнения сохраняйте все, что нужно для оборудования.

1

Другие решения


По вопросам рекламы [email protected]