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

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

Другие вопросы по тегам