/** * Copyright (c) 2025, Jayden Grubb * * SPDX-License-Identifier: BSD-3-Clause */ #pragma once #include #include #include #include namespace nova::gfx { class IDevice; enum class API { UNDEFINED, VULKAN, }; class NOVA_API IContext { public: static std::unique_ptr create(API api); virtual ~IContext() = default; virtual API get_api() const = 0; virtual std::string get_api_name() const = 0; virtual u32 get_api_version() const = 0; virtual std::string get_api_version_string() const = 0; virtual std::unique_ptr create_device() = 0; }; } // namespace nova::gfx