Esempio n. 1
0
        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();
                }
            };
        }
Esempio n. 2
0
        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();
            }
        }