Соединение вулканских структур - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь создать простую обертку для 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 ожидает массив структур, а не массив ссылок на структуры.

...