using Ghost.Core; using Misaki.HighPerformance.Mathematics; using Ghost.Graphics.Core; namespace Ghost.Graphics.RHI; /// /// High-level renderer interface that uses RHI abstractions /// public interface IRenderer : IDisposable { public uint2 Size { get; } /// /// Sets the render Target for this renderer /// /// Render Target to render into public void SetRenderTarget(Handle renderTarget); /// /// Sets the swap chain for this renderer /// /// Swap chain for presentation public void SetSwapChain(ISwapChain? swapChain); /// /// Executes any pending resize operations /// public void ExecutePendingResize(); /// /// Renders a frame /// public void Render(); /// /// Requests a resize operation /// /// New size public void RequestResize(uint2 newSize); /// /// Waits for the GPU to complete all work /// public void WaitIdle(); }