public D3DView() { InitializeComponent(); if (DesignerProperties.GetIsInDesignMode(this)) { return; } viewModel = new D3DViewModel(); DataContext = viewModel; Dispatcher.ShutdownStarted += (sender, e) => { (DataContext as D3DViewModel)?.Dispose(); DataContext = null; }; Loaded += (sender, e) => { if (DesignerProperties.GetIsInDesignMode(this)) { return; } if (FormHost.Child == null) { d3dOnForm = new D3DViewOnForm(); d3dScreen = new D3DRenderScreen(d3dOnForm.Handle, (int)ActualWidth, (int)ActualHeight); viewModel.RenderScreen = d3dScreen; FormHost.Child = d3dOnForm; var timer = new DispatcherTimer(); timer.Tick += new EventHandler(OnRefresh); timer.Interval = new TimeSpan(0, 0, 0, 0, 16); timer.Start(); } }; }
private void DrawRenderObjects(D3DRenderScreen screen) { var context = D3DSystem.Instance.ImmediateContext; context.InputAssembler.InputLayout = tempInputLayout; context.VertexShader.Set(VertexShaders.Instance.GetShader(tempVertexShader)); context.PixelShader.Set(PixelShaders.Instance.GetShader(tempPixelShader)); context.InputAssembler.PrimitiveTopology = SharpDX.Direct3D.PrimitiveTopology.TriangleList; foreach (var renderObject in renderObjects) { renderObject.Draw(); } }