diff --git a/renderer.cpp b/renderer.cpp index 3ce8c31..d605511 100644 --- a/renderer.cpp +++ b/renderer.cpp @@ -1,12 +1,39 @@ #include "renderer.h" Renderer::Renderer() { + createInstance(); + createLogicalDevice(); +} + +Renderer::~Renderer() { + vkDestroyInstance(instance_, nullptr); +} + +void Renderer::createInstance() { VkInstanceCreateInfo instanceCreateInfo = {}; instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; vkCreateInstance(&instanceCreateInfo, nullptr, &instance_); } -Renderer::~Renderer() { - vkDestroyInstance(instance_, nullptr); +void Renderer::createLogicalDevice() { + uint32_t physicalDeviceCount = 0; + vkEnumeratePhysicalDevices(instance_, &physicalDeviceCount, nullptr); + + VkPhysicalDevice* physicalDevices = new VkPhysicalDevice[physicalDeviceCount]; + vkEnumeratePhysicalDevices(instance_, &physicalDeviceCount, physicalDevices); + + VkPhysicalDevice physicalDevice = nullptr; + + for(uint32_t i = 0; i < physicalDeviceCount; i++) { + VkPhysicalDeviceProperties properties = {}; + vkGetPhysicalDeviceProperties(physicalDevices[i], &properties); + + physicalDevice = physicalDevices[i]; + } + + VkDeviceCreateInfo deviceCreateInfo = {}; + deviceCreateInfo.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO; + + vkCreateDevice(physicalDevice, &deviceCreateInfo, nullptr, &device_); } diff --git a/renderer.h b/renderer.h index a5296bb..d3928f9 100644 --- a/renderer.h +++ b/renderer.h @@ -8,5 +8,10 @@ public: ~Renderer(); private: + void createInstance(); + void createLogicalDevice(); + VkInstance instance_ = nullptr; + + VkDevice device_ = nullptr; };