/// <summary> /// Creates a container for the given render target. /// </summary> /// <param name="renderTarget">The render target.</param> /// <param name="setter">The setter.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException"></exception> public static RenderTargetContainer CreateContainer( [NotNull] RenderTarget renderTarget, out Reference<RenderTarget> setter) { if (renderTarget == null) throw new ArgumentNullException(nameof(renderTarget)); RenderTargetContainer container = new RenderTargetContainer(renderTarget); setter = new Reference<RenderTarget>(() => container.RenderTarget, rt => container.RenderTarget = rt); return container; }
/// <summary> /// Creates a container for the given render target. /// </summary> /// <param name="renderTarget">The render target.</param> /// <param name="setter">The setter.</param> /// <returns></returns> /// <exception cref="System.ArgumentNullException"></exception> public static RenderTargetContainer CreateContainer( [NotNull] RenderTarget renderTarget, out Reference <RenderTarget> setter) { if (renderTarget == null) { throw new ArgumentNullException(nameof(renderTarget)); } RenderTargetContainer container = new RenderTargetContainer(renderTarget); setter = new Reference <RenderTarget>(() => container.RenderTarget, rt => container.RenderTarget = rt); return(container); }
public static void Main() { #if DEBUG SharpDX.Configuration.EnableObjectTracking = true; #endif DependencyManger.ForResourceManagerUse( sm => { RenderTargetContainer renderTargetContainer = DependencyManger.Get <RenderTargetContainer>(); Debug.Assert(renderTargetContainer != null, "renderTargetContainer != null"); DirectXResourceManager manager = new DirectXResourceManager(renderTargetContainer.RenderTarget, sm); renderTargetContainer.RenderTargetChanged += rt => manager.RenderTarget = rt; return(manager); }, DependencyCacheFlags.CachePerArgs | DependencyCacheFlags.DisposeOnRelease); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Main()); }
/// <summary> /// Initializes the graphics. /// </summary> private void InitializeGraphics() { DependencyManger.ForTypeUse(() => _renderControl.RenderTargetContainer, DependencyCacheFlags.CacheGlobal); _miskResourceManager = DependencyManger.GetResourceManager(); _miskResourceManager.Add(_whiteStyle); _miskResourceManager.Add(_grayStyle); _miskResourceManager.Add(_blackStyle); RenderTargetContainer renderTargetContainer = _renderControl.RenderTargetContainer; DirectXGraphics graphics = new DirectXGraphics( renderTargetContainer.RenderTarget, _miskResourceManager, _whiteStyle, _blackStyle, 1f); renderTargetContainer.RenderTargetChanged += rt => graphics.RenderTarget = rt; _directXGraphics = graphics; }
/// <summary> /// Initializes a new instance of the <see cref="RenderControl" /> class. /// </summary> public RenderControl() { SwapChainDescription swapCHainDesc = new SwapChainDescription { BufferCount = 2, Usage = Usage.RenderTargetOutput, OutputHandle = Handle, IsWindowed = true, ModeDescription = new ModeDescription( Width, Height, new Rational(60, 1), Format.R8G8B8A8_UNorm), SampleDescription = new SampleDescription(1, 0), Flags = SwapChainFlags.AllowModeSwitch, SwapEffect = SwapEffect.Discard }; Device.CreateWithSwapChain( DriverType.Hardware, DeviceCreationFlags.BgraSupport, swapCHainDesc, out _device, out _swapChain); Debug.Assert(_swapChain != null, "_swapChain != null"); // ReSharper disable once AssignNullToNotNullAttribute _backBuffer = Surface.FromSwapChain(_swapChain, 0); Debug.Assert(_backBuffer != null, "_backBuffer != null"); Size2F dpi = DirectXResourceManager.FactoryD2D.DesktopDpi; RenderTarget renderTarget = new RenderTarget( DirectXResourceManager.FactoryD2D, _backBuffer, new RenderTargetProperties { DpiX = dpi.Width, DpiY = dpi.Height, MinLevel = SharpDX.Direct2D1.FeatureLevel.Level_DEFAULT, PixelFormat = new PixelFormat(Format.Unknown, AlphaMode.Ignore), Type = RenderTargetType.Default, Usage = RenderTargetUsage.None }); _renderTargetContainer = RenderTargetContainer.CreateContainer(renderTarget, out _renderTargetRef); using (FactoryDXGI factory = _swapChain.GetParent<FactoryDXGI>()) { Debug.Assert(factory != null, "factory != null"); factory.MakeWindowAssociation(Handle, WindowAssociationFlags.IgnoreAltEnter); } _renderThread = new Thread(RenderLoop) { Name = "Render Thread", IsBackground = true }; }
/// <summary> /// Initializes a new instance of the <see cref="RenderControl" /> class. /// </summary> public RenderControl() { SwapChainDescription swapCHainDesc = new SwapChainDescription { BufferCount = 2, Usage = Usage.RenderTargetOutput, OutputHandle = Handle, IsWindowed = true, ModeDescription = new ModeDescription( Width, Height, new Rational(60, 1), Format.R8G8B8A8_UNorm), SampleDescription = new SampleDescription(1, 0), Flags = SwapChainFlags.AllowModeSwitch, SwapEffect = SwapEffect.Discard }; Device.CreateWithSwapChain( DriverType.Hardware, DeviceCreationFlags.BgraSupport, swapCHainDesc, out _device, out _swapChain); Debug.Assert(_swapChain != null, "_swapChain != null"); // ReSharper disable once AssignNullToNotNullAttribute _backBuffer = Surface.FromSwapChain(_swapChain, 0); Debug.Assert(_backBuffer != null, "_backBuffer != null"); Size2F dpi = DirectXResourceManager.FactoryD2D.DesktopDpi; RenderTarget renderTarget = new RenderTarget( DirectXResourceManager.FactoryD2D, _backBuffer, new RenderTargetProperties { DpiX = dpi.Width, DpiY = dpi.Height, MinLevel = SharpDX.Direct2D1.FeatureLevel.Level_DEFAULT, PixelFormat = new PixelFormat(Format.Unknown, AlphaMode.Ignore), Type = RenderTargetType.Default, Usage = RenderTargetUsage.None }); _renderTargetContainer = RenderTargetContainer.CreateContainer(renderTarget, out _renderTargetRef); using (FactoryDXGI factory = _swapChain.GetParent <FactoryDXGI>()) { Debug.Assert(factory != null, "factory != null"); factory.MakeWindowAssociation(Handle, WindowAssociationFlags.IgnoreAltEnter); } _renderThread = new Thread(RenderLoop) { Name = "Render Thread", IsBackground = true }; }