Improve vulkan resource freeing

and some minor improvements to the Renderer, now taking in an
AssetRef<Pipeline> as parameter.
This commit is contained in:
Thraix
2024-10-11 20:06:22 +02:00
parent dc735c4df7
commit ecc11f07db
21 changed files with 151 additions and 58 deletions
+9
View File
@@ -16,6 +16,7 @@ namespace Copium
std::unique_ptr<SwapChain> Vulkan::swapChain;
std::unique_ptr<ImGuiInstance> Vulkan::imGuiInstance;
AssetHandle<Texture2D> Vulkan::emptyTexture2D;
AssetHandle<Texture2D> Vulkan::whiteTexture2D;
void Vulkan::Initialize()
{
@@ -39,16 +40,19 @@ namespace Copium
// By looking at where the executable is, since that should always be in the bin folder (it currently isn't though)
AssetManager::RegisterAssetDir("assets/");
emptyTexture2D = AssetHandle<Texture2D>{"empty_texture2d", std::make_unique<Texture2D>(std::vector<uint8_t>{255, 0, 255, 255}, 1, 1, SamplerCreator{})};
whiteTexture2D = AssetHandle<Texture2D>{"white_texture2d", std::make_unique<Texture2D>(std::vector<uint8_t>{255, 255, 255, 255}, 1, 1, SamplerCreator{})};
CP_INFO("Initialized AssetManager in %f seconds", timer.Elapsed());
}
void Vulkan::Destroy()
{
emptyTexture2D.UnloadAsset();
whiteTexture2D.UnloadAsset();
AssetManager::UnregisterAssetDir("assets/");
AssetManager::Cleanup();
imGuiInstance.reset();
swapChain.reset();
device->WaitIdle();
device.reset();
window.reset();
instance.reset();
@@ -79,6 +83,11 @@ namespace Copium
return *imGuiInstance;
}
AssetHandle<Texture2D> Vulkan::GetWhiteTexture2D()
{
return whiteTexture2D;
}
AssetHandle<Texture2D> Vulkan::GetEmptyTexture2D()
{
return emptyTexture2D;