Выравнивание структуры данных Vulkan для Spir-VC++

Программы на C++. Форум разработчиков
Anonymous
 Выравнивание структуры данных Vulkan для Spir-V

Сообщение Anonymous »

В моем приложении C++/Vulkan я передаю данные в свои шейдеры с помощью структур, используя #pragma package, и это довольно темпераментно с выравниванием. Например, если я закажу его так, чтобы перед vec4 стоял vec2, например, выравнивание не будет соответствовать тому, что ожидает шейдер. Есть ли какая-нибудь библиотека, которую я могу использовать, чтобы поместить их в кортеж или что-то в этом роде, чтобы выравнивание совпадало? Или мне лучше всего использовать мой нынешний подход? Я действительно не хочу использовать отдельные универсальные буферы для каждого фрагмента данных. Я немного удивлен, что в glm нет кортежа для этой цели.
мой код на C++...
#pragma pack(push, 1)
struct DataBuffer {
glm::vec4 rgba;
glm::vec2 origin;
glm::vec2 output_dims;
glm::vec2 scale;
};
#pragma pack(pop)

Мой код шейдера GLSL...
layout(binding = 0) uniform t {
vec4 rgba;
vec2 origin;
vec2 output_dims;
vec2 scale;
};


Подробнее здесь: https://stackoverflow.com/questions/790 ... for-spir-v

Вернуться в «C++»