Ejemplo n.º 1
0
 private void DisposeDevice()
 {
     UnloadContent();
     factor?.Dispose();
     device.ImmediateContext.OutputMerger.BlendState?.Dispose();
     device.ImmediateContext?.Dispose();
     depthStencil?.Dispose();
     renderTarget?.Dispose();
     device?.Dispose();
     swapChain?.Dispose();
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Enumerates all the available adapters for the render system. This should
        /// only be used to identify which adapter to use at startup.
        /// </summary>
        /// <returns>List of available adapters</returns>
        public static ReadOnlyList <IGraphicsAdapter> EnumerateAdapters()
        {
            //Create the DXGI Factory
            DXGI.Factory factory = new DXGI.Factory();

            //Create the device
            DXGI.Adapter adapter = factory.GetAdapter(0);
            D3D.Device   device  = new D3D.Device(adapter, D3D.DriverType.Hardware, D3D.DeviceCreationFlags.None);

            //Enumerate adapters
            List <IGraphicsAdapter> adapterList = new List <IGraphicsAdapter>();
            int adapterCount = factory.GetAdapterCount();

            for (int i = 0; i < adapterCount; i++)
            {
                adapterList.Add(new D3D10GraphicsAdapter(device, factory, i));
            }

            factory.Dispose();
            return(new ReadOnlyList <IGraphicsAdapter>(adapterList));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Releases unmanaged and - optionally - managed resources
        /// </summary>
        /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
        protected override void Dispose(bool disposing)
        {
            if (!base.IsDisposed)
            {
                if (disposing)
                {
                    //Clear references
                    Array.Clear(_currentVertexBuffers, 0, _currentVertexBufferCount);
                    Array.Clear(_vertexBindings, 0, _currentVertexBufferCount);
                    _renderTargetManager.ClearAll();

                    _tracker.ReleaseAllResources();
                    _graphicsDevice.ClearState();
                    _graphicsDevice.Dispose();
                    _factory.Dispose();
                }
                base.Dispose(disposing);
#if DEBUG
                System.Diagnostics.Debug.Write(SlimDX.ObjectTable.ReportLeaks());
#endif
            }
        }