protected virtual void Initialize(Configuration config) { var desc = new SwapChainDescription() { BufferCount = 1, ModeDescription = new ModeDescription(config.Width, config.Height, new Rational(60, 1), Format.R8G8B8A8_UNorm), IsWindowed = true, OutputHandle = DisplayHandle, SampleDescription = new SampleDescription(1, 0), SwapEffect = SwapEffect.Discard, Usage = Usage.RenderTargetOutput }; SharpDX.Direct3D11.Device.CreateWithSwapChain( DriverType.Hardware, DeviceCreationFlags.BgraSupport, new[] { SharpDX.Direct3D.FeatureLevel.Level_10_0 }, desc, out device, out swapChain); SharpDX.DXGI.Factory factory = swapChain.GetParent <SharpDX.DXGI.Factory>(); factory.MakeWindowAssociation(DisplayHandle, WindowAssociationFlags.IgnoreAll); backBuffer = Texture2D.FromSwapChain <Texture2D>(swapChain, 0); backBufferView = new RenderTargetView(device, backBuffer); Factory2D = new SharpDX.Direct2D1.Factory(); using (var surface = BackBuffer.QueryInterface <Surface>()) { RenderTarget2D = new RenderTarget(Factory2D, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); } RenderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive; FactoryDWrite = new SharpDX.DirectWrite.Factory(); SceneColorBrush = new SolidColorBrush(RenderTarget2D, SharpDX.Color.White); }
/// <summary> /// /// </summary> private void ResizeBuffers() { // Dispose if (mBackBuffer != null) { mBackBuffer.Dispose(); } if (mBackBufferView != null) { mBackBufferView.Dispose(); } if (mRenderTarget2D != null) { mRenderTarget2D.Dispose(); } // Resize swap chain mSwapChain.ResizeBuffers(mSwapChain.Description.BufferCount, mScreenWidth, mScreenHeight, mSwapChain.Description.ModeDescription.Format, mSwapChain.Description.Flags); // Re-create mBackBuffer = Texture2D.FromSwapChain <Texture2D>(mSwapChain, 0); mBackBufferView = new RenderTargetView(mDevice, mBackBuffer); using (var surface = BackBuffer.QueryInterface <DXGI.Surface>()) { mRenderTarget2D = new RenderTarget(mFactory2D, surface, new RenderTargetProperties(new PixelFormat(DXGI.Format.Unknown, AlphaMode.Premultiplied))); } mRenderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive; }
/// <summary> /// Handles resizing the display Window /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void HandleResize(object sender, EventArgs e) { if (_form.WindowState == FormWindowState.Minimized) { return; } //var form = (Form) sender; //unbinds everything _device.ImmediateContext.ClearState(); UnloadContent(); RenderTarget2D.Dispose(); _backBufferView?.Dispose(); _backBuffer.Dispose(); _surface.Dispose(); _swapChain.ResizeBuffers(1, _form.ClientSize.Width, _form.ClientSize.Height, Format.Unknown, SwapChainFlags.AllowModeSwitch); _backBuffer = Texture2D.FromSwapChain <Texture2D>(_swapChain, 0); _backBufferView = new RenderTargetView(_device, _backBuffer); _surface = BackBuffer.QueryInterface <Surface>(); RenderTarget2D = new RenderTarget(Factory2D, _surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); LoadContent(); }
/// <summary> /// 类初始化函数 /// </summary> /// <param name="formName"></param> public Direct2D(string formName = "Default") { _keybord = new Keyboard(new DirectInput()); _keybord.Acquire(); RenderQuene = new List <RenderQuene_2D>(); Resources = new List <Resource_2D>(); Mainform = new DrawFrom(formName); //创建一个渲染窗口 Mainform.AllowUserResizing = false; //设置不可调整大小 Mainform.KeyCallBackSet(KeyBordCallBack); //设置键盘回调 Mainform.MouseCallBackSet(MouseCallBack); //设置鼠标回调 CreateSwapChain(CreateDesc(Mainform)); //创建设备和交换链 D2dFactory = new SharpDX.Direct2D1.Factory(); //Direct2D1.Factory 是D2D渲染工厂 FactoryDWrite = new SharpDX.DirectWrite.Factory(); //RW工厂 DXGIFactory = SwapChain.GetParent <SharpDX.DXGI.Factory>(); //DXGI.Factory 是基础渲染工厂 DXGIFactory.MakeWindowAssociation(Mainform.Handle, WindowAssociationFlags.IgnoreAll); //关联窗口 并忽略所有事件 // 从backbuffer新建renderTargetView BackBuffer = Texture2D.FromSwapChain <Texture2D>(SwapChain, 0); BackBufferView = new RenderTargetView(D2Ddevice, BackBuffer); using (Surface surface = BackBuffer.QueryInterface <Surface>()) { D2dRenderTarget = new RenderTarget(D2dFactory, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); } DefaultBrush = new SolidColorBrush(D2dRenderTarget, Color.White); }
public D2DFigure() { Factory2D = new SharpDX.Direct2D1.Factory(); using (var surface = BackBuffer.QueryInterface <Surface>()) { RenderTarget2D = new RenderTarget(Factory2D, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, SharpDX.Direct2D1.AlphaMode.Premultiplied))); } RenderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive; }
protected override void InternalInitialize() { base.InternalInitialize(); _factory2D = new Factory(); _factoryDWrite = new SharpDX.DirectWrite.Factory(); using (var surface = BackBuffer.QueryInterface <Surface>()) { _renderTarget2D = new RenderTarget(_factory2D, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); } _renderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive; }
protected override void Initialize(Configuration configuration) { base.Initialize(configuration); Factory2D = new Factory(); using (var surface = BackBuffer.QueryInterface <Surface>()) { _renderTarget2D = new RenderTarget(Factory2D, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); } _renderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive; FactoryDWrite = new SharpDX.DirectWrite.Factory(); SceneColorBrush = new SolidColorBrush(_renderTarget2D, Color.White); }
protected override void Initialize(DemoConfiguration demoConfiguration) { base.Initialize(demoConfiguration); Factory2D = new SharpDX.Direct2D1.Factory(); Surface surface = BackBuffer.QueryInterface <Surface>(); RenderTarget2D = new RenderTarget(Factory2D, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); RenderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive; FactoryDWrite = new SharpDX.DirectWrite.Factory(); surface.Release(); SceneColorBrush = new SolidColorBrush(RenderTarget2D, new Color4(1, 1, 1, 1)); }
protected virtual void Initialize2D() { #if DEBUG Factory2D = new SharpDX.Direct2D1.Factory(FactoryType.SingleThreaded, DebugLevel.Information); #else Factory2D = new SharpDX.Direct2D1.Factory(FactoryType.SingleThreaded); #endif using (var surface = BackBuffer.QueryInterface <Surface>()) { RenderTarget = new RenderTarget(Factory2D, surface, new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied))); } RenderTarget.AntialiasMode = AntialiasMode.PerPrimitive; FactoryDWrite = new SharpDX.DirectWrite.Factory(); SceneColorBrush = new SolidColorBrush(RenderTarget, Color.White); }
/// <summary> /// /// </summary> private void InitializeD2D() { mFactory2D = new SharpDX.Direct2D1.Factory(); using (var surface = BackBuffer.QueryInterface <DXGI.Surface>()) { mRenderTarget2D = new RenderTarget(mFactory2D, surface, new RenderTargetProperties(new PixelFormat(DXGI.Format.Unknown, AlphaMode.Premultiplied))); } mRenderTarget2D.AntialiasMode = AntialiasMode.PerPrimitive; mFactoryDWrite = new SharpDX.DirectWrite.Factory(); SceneColorBrush = new SolidColorBrush(mRenderTarget2D, Color.White); // Initialize fonts foreach (eTextSize size in Enum.GetValues(typeof(eTextSize))) { mTextFormats.Add(size, new SharpDX.DirectWrite.TextFormat(mFactoryDWrite, "Arial", (int)size)); } }
protected override void WindowResize(int width, int height) { base.WindowResize(width, height); Device.ImmediateContext.ClearState(); _renderTarget2D.Dispose(); BackBuffer.Dispose(); RenderView.Dispose(); _surface?.Dispose(); SwapChain.ResizeBuffers(1, 0, 0, Format.R8G8B8A8_UNorm, SwapChainFlags.None); BackBuffer = Resource.FromSwapChain <Texture2D>(SwapChain, 0); RenderView = new RenderTargetView(Device, BackBuffer); _surface = BackBuffer.QueryInterface <Surface>(); _renderTarget2D = new RenderTarget(Factory2D, _surface, new RenderTargetProperties(new PixelFormat(Format.R8G8B8A8_UNorm, AlphaMode.Premultiplied))); }
protected virtual void CreateResource() { //*** using (var surface = BackBuffer.QueryInterface<DXGI.Surface>()) { renderTarget = new D2D.RenderTarget(DirectX.Factory2D, surface, new D2D.RenderTargetProperties() { PixelFormat = new D2D.PixelFormat(DXGI.Format.Unknown, D2D.AlphaMode.Premultiplied), }); } renderTarget.AntialiasMode = D2D.AntialiasMode.PerPrimitive; /***/ /*** using (var surface = BackBuffer.QueryInterface<DXGI.Surface>()) { deviceContext = new D2D.DeviceContext(surface, new SharpDX.Direct2D1.CreationProperties() { DebugLevel = SharpDX.Direct2D1.DebugLevel.Information, Options = SharpDX.Direct2D1.DeviceContextOptions.None, ThreadingMode = SharpDX.Direct2D1.ThreadingMode.SingleThreaded } ); bitmap = new SharpDX.Direct2D1.Bitmap1(deviceContext, surface, new SharpDX.Direct2D1.BitmapProperties1() { BitmapOptions = SharpDX.Direct2D1.BitmapOptions.Target | SharpDX.Direct2D1.BitmapOptions.CannotDraw, PixelFormat = new SharpDX.Direct2D1.PixelFormat(DXGI.Format.B8G8R8A8_UNorm, SharpDX.Direct2D1.AlphaMode.Ignore), DpiX = (float)Dpi, DpiY = (float)Dpi } ); deviceContext.Target = bitmap; } deviceContext.AntialiasMode = D2D.AntialiasMode.PerPrimitive; /***/ }