#pragma once #include "type.h" #include "asset/res/guid.h" #include "render/renderapi.h" #include "backend.h" namespace vkn { class Backend; class VulkanWindow; struct MeshVAO; using api::Guid; using api::Mesh; using api::Shader; class VULKAN_API VulkanAPI : public api::RenderAPI { private: VulkanWindow& window; Backend backend; table MeshTable; public: VulkanAPI(); void Init() override; void Shutdown() override; void SetStaticMesh(Mesh& mesh)override; void DrawStaticMesh(Mesh& mesh)override; void LoadShader(Shader& shader)override; void BeginFrame()override; void EndFrame()override; Backend& GetBackend() { return backend; } static VulkanAPI* Ptr() { return (VulkanAPI*)api::RenderAPI::Ptr(); } }; }