namespace Ghost.Graphics.RHI;
public interface IGraphicsEngine : IDisposable
{
IRenderDevice Device
{
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();
}