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();
}