Ejemplo n.º 1
0
 public void EndD3D()
 {
     renderTarget.Dispose();
     device.Dispose();
     context.Dispose();
     renderTarget = null;
     device       = null;
     context      = null;
 }
Ejemplo n.º 2
0
            public D3D9()
            {
                var presentparams = new SharpDX.Direct3D9.PresentParameters
                {
                    Windowed             = true,
                    SwapEffect           = SharpDX.Direct3D9.SwapEffect.Discard,
                    DeviceWindowHandle   = GetDesktopWindow(),
                    PresentationInterval = SharpDX.Direct3D9.PresentInterval.Default
                };

                const SharpDX.Direct3D9.CreateFlags deviceFlags = SharpDX.Direct3D9.CreateFlags.HardwareVertexProcessing | SharpDX.Direct3D9.CreateFlags.Multithreaded | SharpDX.Direct3D9.CreateFlags.FpuPreserve;

                direct3d = new SharpDX.Direct3D9.Direct3DEx();
                device   = new SharpDX.Direct3D9.DeviceEx(direct3d, 0, SharpDX.Direct3D9.DeviceType.Hardware, IntPtr.Zero, deviceFlags, presentparams);
            }
Ejemplo n.º 3
0
        void StartD3D()
        {
            context = new SharpDX.Direct3D9.Direct3DEx();
            // Ref: https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/wpf-and-direct3d9-interoperation
            var presentparams = new SharpDX.Direct3D9.PresentParameters {
                Windowed   = true,
                SwapEffect = SharpDX.Direct3D9.SwapEffect.Discard,
                //DeviceWindowHandle = GetDesktopWindow(),
                PresentationInterval = SharpDX.Direct3D9.PresentInterval.Default,
                BackBufferHeight     = 1,
                BackBufferWidth      = 1,
                BackBufferFormat     = SharpDX.Direct3D9.Format.Unknown
            };

            device = new SharpDX.Direct3D9.DeviceEx(context, this.adapterIndex,
                                                    SharpDX.Direct3D9.DeviceType.Hardware, IntPtr.Zero,
                                                    SharpDX.Direct3D9.CreateFlags.HardwareVertexProcessing
                                                    | SharpDX.Direct3D9.CreateFlags.Multithreaded
                                                    | SharpDX.Direct3D9.CreateFlags.FpuPreserve,
                                                    presentparams);
        }
Ejemplo n.º 4
0
        private bool WaitForSharpDXAvailability()
        {
            var sharpDxAvailable = false;
            var retries          = 0;

            while (retries < SharpDxAvailabilityMaxRetries)
            {
                using (var direct3DEx = new SharpDX.Direct3D9.Direct3DEx())
                {
                    if (direct3DEx.AdapterCount > 0)
                    {
                        sharpDxAvailable = true;
                        break;
                    }
                }

                Task.Delay(TimeSpan.FromSeconds(1));
            }

            return(sharpDxAvailable);
        }