У меня также есть класс Engine, который управляет оконной системой (настраивает GLFWwindow и отправляет расширения GLFW для уровня проверки Vulkan) и обрабатывает средство визуализации. Классы выглядят примерно так:
Код: Выделить всё
#pragma once
#include "Window.hpp"
#include
#include "Renderer.hpp"
class Engine
{
public:
static void Init(const WND_SPECS &);
static Window* GetWindow();
static std::vectorGetRequiredVulkanExtensions();
static Renderer*& GetRenderer() { return renderer; }
static double GetElapsedTime();
static void Exit();
private:
static Window* window;
public:
static Renderer* renderer;
};
Код: Выделить всё
#pragma once
#include "vulkan/vulkan.h"
#include "Renderer.hpp"
#include
class VkRenderer : public Renderer
{
public:
void Initialize(std::vector) override;
void RenderFrame() override;
void Shutdown() override;
private:
//VulkanDevice device;
//VulkanSwapchain swapchain;
//VulkanPipeline pipeline;
//VulkanCommands commands;
//VulkanSync sync;
};
Код: Выделить всё
int main()
{
WND_SPECS specs;
specs.wnd_width = 1280;
specs.wnd_height = 720;
specs.wnd_name = "WORLD_1";
(void)Engine::Init(specs);
static VkRenderer vkR;
Engine::GetRenderer() = &vkR;
Engine::GetRenderer()->Initialize(Engine::GetRequiredVulkanExtensions());
Scene* scene = new Scene();
scene -> Run();
scene -> Update();
scene -> Exit();
return 0;
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... chitecture
Мобильная версия