using Ghost.Graphics.Contracts; namespace Ghost.Graphics.RHI; public interface IGraphicsEngine : IDisposable { IRenderDevice Device { get; } IShaderCompiler ShaderCompiler { get; } IPipelineLibrary PipelineLibrary { get; } IResourceDatabase ResourceDatabase { get; } IResourceAllocator ResourceAllocator { get; } IRenderer CreateRenderer(); void RemoveRenderer(IRenderer renderer); void ClearRenderers(); /// /// Creates a command buffer for recording rendering commands /// /// Type of command buffer to create /// A new command buffer instance ICommandBuffer CreateCommandBuffer(CommandBufferType type = CommandBufferType.Graphics); /// /// Creates a swap chain for presentation /// /// Swap chain description /// A new swap chain instance ISwapChain CreateSwapChain(SwapChainDesc desc); /// /// Begins a new rendering frame, preparing the graphics context for drawing operations. /// void BeginFrame(); /// /// Renders the current frame. /// void RenderFrame(); /// /// Completes the current rendering frame and performs any necessary finalization steps. /// void EndFrame(); }