using Ghost.Graphics.RHI;
namespace Ghost.Graphics.RHI;
///
/// High-level renderer interface that uses RHI abstractions
///
public interface IRenderer : IDisposable
{
///
/// Sets the render target for this renderer
///
/// Render target to render into
void SetRenderTarget(IRenderTarget? renderTarget);
///
/// Sets the swap chain for this renderer
///
/// Swap chain for presentation
void SetSwapChain(ISwapChain? swapChain);
///
/// Executes any pending resize operations
///
void ExecutePendingResize();
///
/// Renders a frame
///
void Render();
///
/// Requests a resize operation
///
/// New width
/// New height
void RequestResize(uint width, uint height);
///
/// Waits for the GPU to complete all work
///
void WaitIdle();
}