From ddccfd29fb40909a2626b84ff6c83994a4fc2884 Mon Sep 17 00:00:00 2001 From: Xiang Silian Date: Mon, 1 Sep 2025 19:08:19 +0800 Subject: [PATCH] save code --- CMakeLists.txt | 1 - HelloTriangleApplication.cpp | 20 +++++++++++++++++-- HelloTriangleApplication.h | 2 -- VulkanDebug.cpp | 37 ------------------------------------ 4 files changed, 18 insertions(+), 42 deletions(-) delete mode 100644 VulkanDebug.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index c624c5b..76a3756 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,6 @@ set(GLM_INCLUDE_DIR "D:/code/vulkan_demo/glm") add_executable(${PROJECT_NAME} main.cpp HelloTriangleApplication.cpp - VulkanDebug.cpp Cleanup.cpp SwapChain.cpp PhysicalDevice.cpp diff --git a/HelloTriangleApplication.cpp b/HelloTriangleApplication.cpp index 732ad87..9126160 100644 --- a/HelloTriangleApplication.cpp +++ b/HelloTriangleApplication.cpp @@ -14,7 +14,6 @@ void HelloTriangleApplication::initWindow() void HelloTriangleApplication::initVulkan() { createInstance(); - setupDebugMessenger(); createSurface(); pickPhysicalDevice(); createLogicalDevice(); @@ -57,7 +56,11 @@ void HelloTriangleApplication::createInstance() createInfo.enabledLayerCount = static_cast(validationLayers.size()); createInfo.ppEnabledLayerNames = validationLayers.data(); - populateDebugMessengerCreateInfo(debugCreateInfo); + debugCreateInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; + debugCreateInfo.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; + debugCreateInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT; + debugCreateInfo.pfnUserCallback = debugCallback; + createInfo.pNext = (VkDebugUtilsMessengerCreateInfoEXT *)&debugCreateInfo; } else @@ -71,6 +74,19 @@ void HelloTriangleApplication::createInstance() { throw std::runtime_error("failed to create instance!"); } + + auto func = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT"); + if (func != nullptr) + { + auto ret = func(instance, &debugCreateInfo, nullptr, &debugMessenger); + if (ret != VK_SUCCESS) { + throw std::runtime_error("failed to set up debug messenger!"); + } + } + else + { + throw std::runtime_error("failed to create instance!"); + } } void HelloTriangleApplication::mainLoop() diff --git a/HelloTriangleApplication.h b/HelloTriangleApplication.h index 355e71e..7ac4ba1 100644 --- a/HelloTriangleApplication.h +++ b/HelloTriangleApplication.h @@ -110,8 +110,6 @@ private: void cleanup(); void recreateSwapChain(); void createInstance(); - void populateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& createInfo); - void setupDebugMessenger(); void createSurface() { if (glfwCreateWindowSurface(instance, window, nullptr, &surface) != VK_SUCCESS) { diff --git a/VulkanDebug.cpp b/VulkanDebug.cpp deleted file mode 100644 index bf0746d..0000000 --- a/VulkanDebug.cpp +++ /dev/null @@ -1,37 +0,0 @@ -#include "HelloTriangleApplication.h" - - -VkResult CreateDebugUtilsMessengerEXT(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerEXT *pDebugMessenger) -{ - auto func = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT"); - if (func != nullptr) - { - return func(instance, pCreateInfo, pAllocator, pDebugMessenger); - } - else - { - return VK_ERROR_EXTENSION_NOT_PRESENT; - } -} - -void HelloTriangleApplication::setupDebugMessenger() -{ - if (!enableValidationLayers) - return; - - VkDebugUtilsMessengerCreateInfoEXT createInfo; - populateDebugMessengerCreateInfo(createInfo); - - if (CreateDebugUtilsMessengerEXT(instance, &createInfo, nullptr, &debugMessenger) != VK_SUCCESS) - { - throw std::runtime_error("failed to set up debug messenger!"); - } -} - -void HelloTriangleApplication::populateDebugMessengerCreateInfo(VkDebugUtilsMessengerCreateInfoEXT& createInfo) { - createInfo = {}; - createInfo.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; - createInfo.messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT; - createInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT; - createInfo.pfnUserCallback = debugCallback; -} \ No newline at end of file