From 39cf0ffbd6c83fa175d9d7e658137378abf1120b Mon Sep 17 00:00:00 2001 From: Bazsalanszky Date: Wed, 31 Jul 2019 20:58:02 +0200 Subject: [PATCH] vkDevice --- Vulkan/main.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Vulkan/main.cpp b/Vulkan/main.cpp index c983c24..c90e615 100644 --- a/Vulkan/main.cpp +++ b/Vulkan/main.cpp @@ -63,8 +63,11 @@ private: VkInstance instance; //Vulkan variables VkDebugUtilsMessengerEXT debugMessenger; + VkPhysicalDevice physicalDevice = VK_NULL_HANDLE; + VkDevice device; + VkQueue graphicsQueue; void initWindow() { glfwInit(); @@ -91,6 +94,7 @@ private: if (enableValidationLayers) { DestroyDebugUtilsMessengerEXT(instance, debugMessenger, nullptr); } + vkDestroyDevice(device,nullptr); vkDestroyInstance(instance, nullptr); glfwDestroyWindow(window); @@ -275,6 +279,27 @@ private: queueCreateInfo.queueCount = 1; float queuePriority = 1.0f; queueCreateInfo.pQueuePriorities = &queuePriority; + + VkPhysicalDeviceFeatures deviceFeatures = {}; + + VkDeviceCreateInfo createInfo = {}; + createInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; + createInfo.pQueueCreateInfos = &queueCreateInfo; + createInfo.queueCreateInfoCount = 1; + + createInfo.pEnabledFeatures = &deviceFeatures; + createInfo.enabledLayerCount = 0; + if (enableValidationLayers) { + createInfo.enabledLayerCount = static_cast(validationLayers.size()); + createInfo.ppEnabledLayerNames = validationLayers.data(); + } + else { + createInfo.enabledLayerCount = 0; + } + if (vkCreateDevice(physicalDevice, &createInfo, nullptr, &device) != VK_SUCCESS) { + throw std::runtime_error("Error creating logical device!"); + } + vkGetDeviceQueue(device, indices.graphicsFamily.value(), 0, &graphicsQueue); } };