#pragma once #include namespace dx12_starter { struct APIVersion { uint32_t major; uint32_t minor; }; struct RendererCreateParams { void* nativeWindowHandle; APIVersion minimumVersion; uint32_t frameCount; }; class IRenderer { public: virtual ~IRenderer() = default; virtual void RecordCommands() = 0; virtual void Render() = 0; virtual void WaitForPreviousFrame() = 0; virtual void Destroy() = 0; static std::unique_ptr Create(const RendererCreateParams& params); }; } // namespace dx12_starter