После отладки я заметил, что проблема заключалась в заполнении значения ppEnabledExtensionNames структуры VkInstanceCreateInfo. Я решил обернуть расширения glfw вектором и использовать его для заполнения структуры.
Вот код функции для заполнения этой структуры.
Код: Выделить всё
VkInstanceCreateInfo VulkanManager::paste_create_info(VkApplicationInfo* app_info)
{
VkInstanceCreateInfo create_info{};
vector device_extensions = {
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
};
uint32_t glfw_extensions_count = 0;
const char** glfw_extensions;
create_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
create_info.pApplicationInfo = app_info;
glfw_extensions = glfwGetRequiredInstanceExtensions(&glfw_extensions_count);
for (int i = 0; i < glfw_extensions_count; i++)
device_extensions.push_back(glfw_extensions[i]);
create_info.enabledExtensionCount = (uint32_t) device_extensions.size();
create_info.ppEnabledExtensionNames = device_extensions.data();
create_info.enabledLayerCount = 0;
return create_info;
}
Код: Выделить всё
{
VkApplicationInfo app_info{};
app_info.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO;
app_info.pApplicationName = "Triangle";
app_info.applicationVersion = VK_MAKE_VERSION(1, 0, 0);
app_info.pEngineName = "No Engine";
app_info.engineVersion = VK_MAKE_VERSION(1, 0, 0);
app_info.apiVersion = VK_API_VERSION_1_0;
return app_info;
}
Код: Выделить всё
void VulkanManager::create_vulkan()
{
VkApplicationInfo app_info = VulkanManager::paste_app_info();
VkInstanceCreateInfo create_info = VulkanManager::paste_create_info(&app_info);
Подробнее здесь: https://stackoverflow.com/questions/781 ... instancing