Exemple #1
0
        private void UpdateScene()
        {
            if (RenderImage.IsFrontBufferAvailable)
            {
                int w = System.Convert.ToInt32(RenderTarget.ActualWidth);
                int h = System.Convert.ToInt32(RenderTarget.ActualHeight);

                if (w == 0 || h == 0)
                {
                    return;
                }

                RenderImage.Lock();

                if (RenderImage.PixelWidth != w || RenderImage.PixelHeight != h)
                {
                    RenderImage.SetBackBuffer(D3DResourceType.IDirect3DSurface9, IntPtr.Zero);
                    Rush.RushResize(w, h);
                    RenderSurface = Rush.RushGetBackBuffer();
                    RenderImage.SetBackBuffer(D3DResourceType.IDirect3DSurface9, RenderSurface);
                }

                Rush.RushUpdate();

                if (RenderSurface != IntPtr.Zero)
                {
                    Int32Rect rect = new Int32Rect(0, 0, w, h);
                    RenderImage.AddDirtyRect(rect);
                }
                RenderImage.Unlock();
            }
        }
Exemple #2
0
 private void StopRenderingScene()
 {
     // This method is called when WPF loses its D3D device.
     // In such a circumstance, it is very likely that we have lost
     // our custom D3D device also, so we should just release the scene.
     // We will create a new scene when a D3D device becomes
     // available again.
     CompositionTarget.Rendering -= OnRendering;
     Rush.RushShut();
     RenderSurface = IntPtr.Zero;
 }
Exemple #3
0
        private void BeginRenderingScene()
        {
            RenderSurface = Rush.RushGetBackBuffer();
            if (RenderImage.IsFrontBufferAvailable && RenderSurface != IntPtr.Zero)
            {
                // set the back buffer using the new scene pointer
                RenderImage.Lock();
                RenderImage.SetBackBuffer(D3DResourceType.IDirect3DSurface9, RenderSurface);
                RenderImage.Unlock();

                // leverage the Rendering event of WPF's composition target to
                // update the custom D3D scene
                CompositionTarget.Rendering += OnRendering;
            }
        }
Exemple #4
0
        public MainWindow()
        {
            RenderImage = new D3DImage();
            RenderImage.IsFrontBufferAvailableChanged
                += new DependencyPropertyChangedEventHandler(OnIsFrontBufferAvailableChanged);

            Resources["RenderSurface"] = new ImageBrush(RenderImage);

            string cmdLine = "--media=\"c:\\home\\proj\\rview\\media\\\"";

            Rush.RushInit(cmdLine);

            BeginRenderingScene();

            InitializeComponent();
        }