using SlimDX; using SlimDX.Direct3D10; namespace Aiwaz.Contracts { public class ViewPort { public ViewPort() { MaxDepth = 1.0f; } public int TopLeftX; public int TopLeftY; public int Width; public int Height; public float MinDepth; public float MaxDepth; public static implicit operator SlimDX.Direct3D10.Viewport(ViewPort vp) { return new SlimDX.Direct3D10.Viewport(vp.TopLeftX, vp.TopLeftY, vp.Width, vp.Height, vp.MinDepth, vp.MaxDepth); } }; public enum BindFlags { None = 0x000, ClearDepthStencil = 0x001, ClearColor = 0x002, ClearAll = 0x00F, BindAdditionalTexture0 = 0x010, BindAdditionalTexture1 = 0x020, BindAdditionalTexture2 = 0x040, BindAdditionalTexture3 = 0x080, BindBaseTexture = 0x100, BindAllTextures = 0xFF0, Default = ClearAll | BindAllTextures }; public interface IRenderTargetBase { float ClearDepth { get; set; } byte ClearStencil { get; set; } Color4 ClearColor { get; set; } ViewPort ViewPort { get; set; } int RenderTargetWidth { get; } int RenderTargetHeight { get; } SlimDX.DXGI.Format RenderTargetFormat { get; } bool HasDepthStencilBuffer { get; set; } RenderTargetView DX10RenderTargetView { get; } DepthStencilView DX10DepthStencilView { get; } void AddAdditionalRenderTarget(IRenderTargetBase target); void RemoveAdditionalRenderTarget(IRenderTargetBase target); void Bind(BindFlags bindFlags); void UnbindAllRenderTargets(); }; }