Files
LearningVulkan/main.cpp
2026-01-21 15:05:14 -05:00

97 lines
1.6 KiB
C++

#include "Logger.h"
#include "VulkanInstanceManager.h"
#include "VulkanDeviceManager.h"
#include "VulkanDebugManager.h"
#include "GlfwWindowManager.h"
#include "VulkanGraphicsPipeline.h"
// #include "VulkanContext.h"
struct AppConfig
{
std::string Title = "Learning Vulkan";
uint32_t Width = 800;
uint32_t Height = 600;
bool bResizable = false;
bool bFullscreen = false;
bool bValidationEnabled = true;
bool bVerboseLogging = false;
};
class HelloTriangleApplication
{
public:
void Run()
{
Initialization();
MainLoop();
Cleanup();
}
private:
AppConfig Settings = {};
VulkanInstanceManager InstanceManager;
GlfwWindowManager WindowManager;
void Initialization()
{
InitGlfw();
InitVulkan();
InstanceManager.SetupDebug();
WindowManager.CreateSurface(InstanceManager.GetInstance());
InstanceManager.SetupDevice();
}
void InitVulkan()
{
FVulkanConfig Config = {
Settings.bValidationEnabled,
Settings.bVerboseLogging
};
InstanceManager.Initialize(Config);
}
void InitGlfw()
{
FWindowConfig Config = {
Settings.Title,
Settings.Width,
Settings.Height,
Settings.bResizable,
Settings.bFullscreen
};
WindowManager.Initialize(Config);
}
void MainLoop()
{
while (!WindowManager.ShouldClose())
{
WindowManager.PollEvents();
}
}
void Cleanup()
{
WindowManager.Cleanup(InstanceManager.GetInstance());
InstanceManager.Cleanup();
}
};
int main()
{
HelloTriangleApplication app;
try
{
app.Run();
}
catch (const std::exception& e)
{
Log::Error(e.what());
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}