From 86dfc28a6c1172ee4707982d62d66c1edef89594 Mon Sep 17 00:00:00 2001 From: Jiga228 Date: Sat, 4 Oct 2025 15:34:40 +0700 Subject: [PATCH] Refactor --- Core/Core/RenderEngine.cpp | 51 +++++++++++++++++++------------------- Core/Core/RenderEngine.h | 18 +++++++------- 2 files changed, 34 insertions(+), 35 deletions(-) diff --git a/Core/Core/RenderEngine.cpp b/Core/Core/RenderEngine.cpp index 0043dd4..ed2cc7a 100644 --- a/Core/Core/RenderEngine.cpp +++ b/Core/Core/RenderEngine.cpp @@ -1,6 +1,5 @@ #include "RenderEngine.h" -#include #include #include #include @@ -29,14 +28,14 @@ static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback( return VK_FALSE; } -VkResult RenderEngine::enable_layer_validation(VkDebugUtilsMessengerCreateInfoEXT* create_info) +VkResult RenderEngine::enable_layer_validation(const VkDebugUtilsMessengerCreateInfoEXT* create_info) { PFN_vkCreateDebugUtilsMessengerEXT debug_creator = reinterpret_cast(vkGetInstanceProcAddr(instance_, "vkCreateDebugUtilsMessengerEXT")); return debug_creator(instance_, create_info, nullptr, &debug_messenger_); } #endif -RenderEngine::SwapchainSupportDetails RenderEngine::query_swapchain_details() +RenderEngine::SwapchainSupportDetails RenderEngine::query_swapchain_details() const { SwapchainSupportDetails details; @@ -68,14 +67,14 @@ std::vector RenderEngine::get_required_extensions() } -bool RenderEngine::QueueFamilyIndices::is_complete() +bool RenderEngine::QueueFamilyIndices::is_complete() const { - return graphycs_family.has_value() && present_family.has_value(); + return graphics_family.has_value() && present_family.has_value(); } VkVertexInputBindingDescription RenderEngine::Vertex::get_binding_description() { - VkVertexInputBindingDescription description{}; + VkVertexInputBindingDescription description; description.binding = 0; description.stride = sizeof(Vertex); description.inputRate = VK_VERTEX_INPUT_RATE_VERTEX; @@ -139,13 +138,13 @@ RenderEngine::QueueFamilyIndices RenderEngine::find_queue_family_indices(VkPhysi uint32_t queueFamilyCount = 0; vkGetPhysicalDeviceQueueFamilyProperties(physical_device, &queueFamilyCount, nullptr); - std::vector family_propertieses(queueFamilyCount); - vkGetPhysicalDeviceQueueFamilyProperties(physical_device, &queueFamilyCount, family_propertieses.data()); + std::vector family_properties(queueFamilyCount); + vkGetPhysicalDeviceQueueFamilyProperties(physical_device, &queueFamilyCount, family_properties.data()); - for (uint32_t i = 0; i < family_propertieses.size(); ++i) + for (uint32_t i = 0; i < family_properties.size(); ++i) { - if (family_propertieses[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) - queue_family_indices.graphycs_family = i; + if (family_properties[i].queueFlags & VK_QUEUE_GRAPHICS_BIT) + queue_family_indices.graphics_family = i; VkBool32 present_support = false; VK_CHECK(vkGetPhysicalDeviceSurfaceSupportKHR(physical_device, i, surface, &present_support)); @@ -195,7 +194,7 @@ VkExtent2D RenderEngine::choose_extent(const VkSurfaceCapabilitiesKHR& capabilit } } -VkShaderModule RenderEngine::create_shader_module(const std::string code) +VkShaderModule RenderEngine::create_shader_module(const std::string& code) const { VkShaderModuleCreateInfo shader_module_info{}; shader_module_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO; @@ -275,7 +274,7 @@ void RenderEngine::create_logical_device() VkPhysicalDeviceFeatures device_features{}; std::vector queue_create_infos; - std::set unique_queue_families = {indices.graphycs_family.value(), indices.present_family.value()}; + std::set unique_queue_families = {indices.graphics_family.value(), indices.present_family.value()}; float queue_priority = 1.0f; VkDeviceQueueCreateInfo device_queue_create_info{}; @@ -308,7 +307,7 @@ void RenderEngine::create_logical_device() #endif VK_CHECK(vkCreateDevice(physical_device_, &device_create_info, nullptr, &device_)); - vkGetDeviceQueue(device_, indices.graphycs_family.value(), 0, &graphics_queue_); + vkGetDeviceQueue(device_, indices.graphics_family.value(), 0, &graphics_queue_); vkGetDeviceQueue(device_, indices.present_family.value(), 0, &present_queue_); } @@ -339,8 +338,8 @@ void RenderEngine::create_swapchain(VkPresentModeKHR desired_present_mode) swapchain_create_info.oldSwapchain = VK_NULL_HANDLE; QueueFamilyIndices family_indices = find_queue_family_indices(physical_device_, surface_); - uint32_t queue_family_indices[] = {family_indices.graphycs_family.value(), family_indices.present_family.value()}; - if (family_indices.graphycs_family != family_indices.present_family) + uint32_t queue_family_indices[] = {family_indices.graphics_family.value(), family_indices.present_family.value()}; + if (family_indices.graphics_family != family_indices.present_family) { swapchain_create_info.imageSharingMode = VK_SHARING_MODE_CONCURRENT; swapchain_create_info.queueFamilyIndexCount = 2; @@ -399,7 +398,7 @@ void RenderEngine::create_render_pass() attachment_description.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED; attachment_description.finalLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; - VkAttachmentReference attachment_reference{}; + VkAttachmentReference attachment_reference; attachment_reference.attachment = 0; attachment_reference.layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL; @@ -593,13 +592,13 @@ void RenderEngine::create_command_pool() VkCommandPoolCreateInfo command_pool_info{}; command_pool_info.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO; - command_pool_info.queueFamilyIndex = queue_family_indices.graphycs_family.value(); + command_pool_info.queueFamilyIndex = queue_family_indices.graphics_family.value(); command_pool_info.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT; VK_CHECK(vkCreateCommandPool(device_, &command_pool_info, nullptr, &command_pool_)); } -uint32_t RenderEngine::find_memory_type(uint32_t typeFilter, VkMemoryPropertyFlags properties) +uint32_t RenderEngine::find_memory_type(uint32_t typeFilter, VkMemoryPropertyFlags properties) const { VkPhysicalDeviceMemoryProperties memory_properties{}; vkGetPhysicalDeviceMemoryProperties(physical_device_, &memory_properties); @@ -636,7 +635,7 @@ void RenderEngine::allocate_vertex_buffer() void* data; VK_CHECK(vkMapMemory(device_, vertex_buffer_memory_, 0, buffer_info.size, 0, &data)); - memcpy(data, vertices.data(), (size_t) buffer_info.size); + memcpy(data, vertices.data(), buffer_info.size); vkUnmapMemory(device_, vertex_buffer_memory_); } @@ -674,13 +673,13 @@ void RenderEngine::create_sync_objects() } } -void RenderEngine::record_command_buffer(VkCommandBuffer command_buffer, uint32_t image_index) +void RenderEngine::record_command_buffer(VkCommandBuffer command_buffer, uint32_t image_index) const { VkCommandBufferBeginInfo command_buffer_begin_info{}; command_buffer_begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; VK_CHECK(vkBeginCommandBuffer(command_buffer, &command_buffer_begin_info)); - const VkClearValue clear_color = {{{0.0f, 0.0f, 0.0f, 1.0f}}}; + constexpr VkClearValue clear_color = {{{0.0f, 0.0f, 0.0f, 1.0f}}}; VkRenderPassBeginInfo render_pass_begin_info{}; render_pass_begin_info.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; render_pass_begin_info.renderPass = render_pass_; @@ -697,7 +696,7 @@ void RenderEngine::record_command_buffer(VkCommandBuffer command_buffer, uint32_ VkDeviceSize offset[] = {0}; vkCmdBindVertexBuffers(command_buffer, 0, 1, vertex_buffers, offset); - VkViewport viewport{}; + VkViewport viewport; viewport.x = 0.0f; viewport.y = 0.0f; viewport.width = static_cast(swapchain_extent_.width); @@ -706,7 +705,7 @@ void RenderEngine::record_command_buffer(VkCommandBuffer command_buffer, uint32_ viewport.maxDepth = 1.0f; vkCmdSetViewport(command_buffer, 0, 1, &viewport); - VkRect2D scissor{}; + VkRect2D scissor; scissor.offset = {0, 0}; scissor.extent = swapchain_extent_; vkCmdSetScissor(command_buffer, 0, 1, &scissor); @@ -752,7 +751,7 @@ void RenderEngine::draw_frame() vkQueuePresentKHR(present_queue_, &present_info); - current_frame_ = (current_frame_ + 1) % swapchain_images_.size(); + current_frame_ = (current_frame_ + 1) % static_cast(swapchain_images_.size()); } void RenderEngine::create_surface() @@ -856,7 +855,7 @@ void RenderEngine::start() } } -void RenderEngine::stop_render() +void RenderEngine::stop_render() const { if (window_ != nullptr && !glfwWindowShouldClose(window_)) glfwSetWindowShouldClose(window_, true); diff --git a/Core/Core/RenderEngine.h b/Core/Core/RenderEngine.h index 5cae440..b2b808c 100644 --- a/Core/Core/RenderEngine.h +++ b/Core/Core/RenderEngine.h @@ -24,9 +24,9 @@ class RenderEngine { struct QueueFamilyIndices { - std::optional graphycs_family; + std::optional graphics_family; std::optional present_family; - bool is_complete(); + bool is_complete() const; }; struct SwapchainSupportDetails { @@ -43,14 +43,14 @@ class RenderEngine static VkVertexInputBindingDescription get_binding_description(); static std::array get_vertex_attribute_descriptions(); }; - const std::vector vertices = { + std::vector vertices = { {{0.0f, -0.5f}, {1.0f, 0.0f, 0.0f}}, {{0.5f, 0.5f}, {0.0f, 1.0f, 0.0f}}, {{-0.5f, 0.5f}, {0.0f, 0.0f, 1.0f}} }; VkBuffer vertex_buffer_ = VK_NULL_HANDLE; VkDeviceMemory vertex_buffer_memory_ = VK_NULL_HANDLE; - uint32_t find_memory_type(uint32_t typeFilter, VkMemoryPropertyFlags properties); + uint32_t find_memory_type(uint32_t typeFilter, VkMemoryPropertyFlags properties) const; void allocate_vertex_buffer(); #pragma endregion @@ -82,10 +82,10 @@ class RenderEngine std::vector in_flight_fences_; #ifdef _DEBUG - VkResult enable_layer_validation(VkDebugUtilsMessengerCreateInfoEXT* create_info); + VkResult enable_layer_validation(const VkDebugUtilsMessengerCreateInfoEXT* create_info); VkDebugUtilsMessengerEXT debug_messenger_; #endif - SwapchainSupportDetails query_swapchain_details(); + SwapchainSupportDetails query_swapchain_details() const; static std::vector get_required_extensions(); static bool is_device_suitable(VkPhysicalDevice device, VkSurfaceKHR surface); @@ -94,7 +94,7 @@ class RenderEngine static VkSurfaceFormatKHR choose_surface_format(const std::vector& surface_formats); static VkPresentModeKHR choose_present_mode(const std::vector& present_modes, VkPresentModeKHR desired_present_mode); static VkExtent2D choose_extent(const VkSurfaceCapabilitiesKHR& capabilities, GLFWwindow* window); - VkShaderModule create_shader_module(const std::string code); + VkShaderModule create_shader_module(const std::string& code) const; void create_instance(); void create_surface(); @@ -109,7 +109,7 @@ class RenderEngine void allocate_command_buffers(); void create_sync_objects(); - void record_command_buffer(VkCommandBuffer command_buffer, uint32_t image_index); + void record_command_buffer(VkCommandBuffer command_buffer, uint32_t image_index) const; void draw_frame(); public: // Can throw the exception @@ -117,5 +117,5 @@ public: ~RenderEngine(); void start(); - void stop_render(); + void stop_render() const; }; \ No newline at end of file