From af725e5030ae37df370ffd0dfcd4b13211a7eda9 Mon Sep 17 00:00:00 2001 From: Gabor Galgoczy <ggabor2002@gmail.com> Date: Wed, 14 Feb 2024 13:51:25 +0100 Subject: [PATCH] Start documenting Instance creation --- CMakeLists.txt | 1 + docs/lectures/01.md | 24 ++++++++++++++++++++---- src/CMakeLists.txt | 1 + src/Renderer.cpp | 5 +++++ src/Renderer.hpp | 11 +++++++++++ 5 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 src/Renderer.cpp create mode 100644 src/Renderer.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index fc7a882..51775f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,6 +66,7 @@ target_compile_definitions(${PROJECT_NAME} PRIVATE if (engine_debug) target_compile_definitions(${PROJECT_NAME} PRIVATE ENGINE_VULKAN_DEBUG) endif () +target_precompile_headers(${PROJECT_NAME} PRIVATE <vulkan/vulkan.hpp>) target_link_libraries(${PROJECT_NAME} PRIVATE Vulkan::Vulkan) # VulkanMemoryAllocator diff --git a/docs/lectures/01.md b/docs/lectures/01.md index 598e5e8..4365025 100644 --- a/docs/lectures/01.md +++ b/docs/lectures/01.md @@ -1,14 +1,14 @@ # Inicializálás -Mielőtt nekilátnál a kódolásnak, hozz létre egy kiinduló projektet. A példák kiinduló kódja megtalálható [ezen a linken](https://git.sch.bme.hu/kszk/devteam/vulkan-workshop/-/tree/master/lectures/lecture_01/starter-project?ref_type=heads). +Mielőtt nekilátnál a kódolásnak, hozz létre egy kiinduló projektet. A példák kiinduló kódja megtalálható [ezen a linken](https://git.sch.bme.hu/kszk/devteam/vulkan-workshop/-/tree/starter). A példák Vulkan mellett [glm](https://github.com/g-truc/glm), [GLFW](https://www.glfw.org/) és [VulkanMemoryAllocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator?tab=readme-ov-file) könyvtárakat használnak. -Érdemes még a [bevezető előadás](../Vulkan%20Bevezető.pptx) áttanulmányozása. +Érdemes még a [bevezető előadás](https://git.sch.bme.hu/kszk/devteam/vulkan-workshop/-/blob/master/docs/Vulkan%20Bevezet%C5%91.pptx?ref_type=heads) áttanulmányozása. ## Általános -A workshop folyamán a [Vulkan hivatalos C++ binding-ja](https://github.com/KhronosGroup/Vulkan-Hpp)it fogjuk használni, és a kódok is C++20-ban lettek megírva. +A workshop folyamán a [Vulkan hivatalos C++ binding-ja](https://github.com/KhronosGroup/Vulkan-Hpp)it fogjuk használni, és a kód részletek is C++20-ban lettek megírva. ## Instance @@ -18,5 +18,21 @@ Bármilyen Vulkan kód kiinduló eleme egy `vk::Instance` (C-ben `VkInstance`) o A C++ binding-ban [RAII támogatás](https://github.com/KhronosGroup/Vulkan-Hpp/blob/main/vk_raii_ProgrammingGuide.md) is adott. De ez tapasztalat alapján nekünk inkább csak a fordítást fogja lassítani, minthogy a kódolásban könnyedséget okozna. -Mivel ez egy Vulkan handle, ezért használat után nekünk kell "felszabadítani". Habár nem best practice, de mi minden ilyen handle helyett egy C++ `unique_ptr`-hez hasonló struktúrába fogjuk becsomagolni ezeket, amit a Vulkan binding ad. +Mivel ez egy Vulkan handle, ezért használat után nekünk kell "felszabadítani". Habár nem best practice, de mi minden ilyen handle helyett egy C++ `unique_ptr`-hez hasonló struktúrával fogjuk használni ezeket, amit a Vulkan binding biztosít. + +??? example "Hozzuk létre a `Renderer` osztály!" + + ```cpp title="Renderer.hpp" + #pragma once + + #include <vulkan/vulkan.hpp> + + class Renderer { + public: + Renderer(); + + private: + vk::UniqueInstance m_instance; + }; + ``` diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8e99fbf..c1f9dfd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,5 @@ target_sources(${PROJECT_NAME} PRIVATE App.cpp main.cpp + Renderer.cpp ) \ No newline at end of file diff --git a/src/Renderer.cpp b/src/Renderer.cpp new file mode 100644 index 0000000..38dad77 --- /dev/null +++ b/src/Renderer.cpp @@ -0,0 +1,5 @@ +#include "Renderer.hpp" + +[[nodiscard]] auto create_instance() -> vk::UniqueInstance {} + +Renderer::Renderer() : m_instance{ create_instance() } {} diff --git a/src/Renderer.hpp b/src/Renderer.hpp new file mode 100644 index 0000000..26ff61c --- /dev/null +++ b/src/Renderer.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include <vulkan/vulkan.hpp> + +class Renderer { +public: + Renderer(); + +private: + vk::UniqueInstance m_instance; +}; -- GitLab