Я пытаюсь преобразовать свою существующую кодовую базу, чтобы использовать обертки, определенные в vulkan.hpp в лунном SDK.
В частности, у меня была строка кода:
vkEnumerateInstanceLayerProperties(&layerCount, nullptr);
Какой родной C-образный способ делать вещи с помощью vulkan.
Я попытался изменить его на:
vk::enumerateInstanceLayerProperties(&layerCount, nullptr);
Это соглашение об именах для vulkan.hpp. Это, однако, не компилируется, с множественными ошибками, первая из которых error: ‘unsigned int*’ is not a class, struct, or union type
Подпись, определенная в vulkan.hpp:
template <typename Allocator, typename Dispatch>
VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties(Allocator const& vectorAllocator, Dispatch const &d )
Тогда я предположил, что первым аргументом должен быть вектор:
std::vector<vk::LayerProperties> availableLayers;
vk::enumerateInstanceLayerProperties(availableLayers, nullptr);
Однако это также не скомпилируется, предупреждая меня о:
error: request for member ‘vkEnumerateInstanceLayerProperties’ in ‘d’, whichis of non-class type ‘std::nullptr_t’
d
- второй параметр функции.
Какой должна быть диспетчеризация, чтобы успешно скомпилировать этот кусок кода?