У меня создалось впечатление, что тип float2x4 будет занимать 32 байта, однако, когда я объявляю следующий float2x4 varname [100], он занимает 64 * 100 байт, а не 32 * 100 байтов, как ожидалось. Как так? Возможно, я не вижу что-то, связанное с заполнением float2x4.Проблема с размером примитивного типа HLSL
0
A
ответ
1
float2x4 просит 4 float2s. Поскольку каждый «регистр» имеет ширину 16 байтов (1 float4), тогда он использует пространство на 64 байта для хранения 4 float2s. Z и W в каждом из 4 float4s не используются и действуют как дополнение.
Напротив, float4x2 запрашивает 2 float4s и идеально подходит для двух регистров float4 (32 байта).
Ahh, похоже, я ошибаюсь float2x4 для 2 float4, моя ошибка, спасибо за расчистку. –
Не забудьте принять ответ, если это ответит на ваш вопрос. –
Это противоположность, floatAxB - это строки из столбцов B. – galop1n