Я пытаюсь создать простую обертку для vulkan.
Каждая структура vulkan соединена с классом C ++, который можно использовать. Класс содержит экземпляр исходной структуры vulkan, такой как:
{
..
private:
VkQueueFamilyProperties instance = {};
}
Функции, такие как vkGetPhysicalDeviceQueueFamilyProperties также соединены. Например. этот метод ожидает массив структур в качестве третьего параметра pQueueFamilyProperties
.
Я создаю такой массив следующим образом:
std::vector<S*> arr(len);
for (unsigned int i = 0; i < len; ++i) {
arr[i] = &my_class->instance;
};
out = arr.data();
Передача этого массива в функцию vulkan приводит к случайному сбою программы, поскольку функция vulkan ожидает массив структур, а не массив структурных ссылок. Как передать экземпляр класса моего класса-бриджа функции vulkan?
Я что-то упустил здесь?
Спасибо за ваше время!
Редактировать: vkGetPhysicalDeviceQueueFamilyProperties
обновляет элементы структуры переданных pQueueFamilyProperties
. Так как же заставить функцию vulkan обновлять массив структур my_class->instance
и их членов?
Edit2: мне кажется, я нашел основную проблему, заполнение вектора заканчивается созданием копии заданного значения. Чтобы создать ссылку, просто заполните указатель. Но, как я уже сказал, я не могу использовать ссылки, так как функция vulkan ожидает массив структур, а не массив ссылок на структуры.