Skip to content
Snippets Groups Projects
Commit af725e50 authored by Gabor Galgoczy's avatar Gabor Galgoczy
Browse files

Start documenting Instance creation

parent 6ba58a2e
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
# 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;
};
```
target_sources(${PROJECT_NAME} PRIVATE
App.cpp
main.cpp
Renderer.cpp
)
\ No newline at end of file
#include "Renderer.hpp"
[[nodiscard]] auto create_instance() -> vk::UniqueInstance {}
Renderer::Renderer() : m_instance{ create_instance() } {}
#pragma once
#include <vulkan/vulkan.hpp>
class Renderer {
public:
Renderer();
private:
vk::UniqueInstance m_instance;
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment