/// <summary> /// Releases the DirectX device and any device dependent resources. /// </summary> /// <remarks> /// This method is safe to be called even if the instance has been disposed. /// </remarks> public void FreeResources() { this.OnFreeResources(); if (this.texture != null) { this.texture.Dispose(); this.texture = null; } if (this.renderTarget != null) { this.renderTarget.Dispose(); this.renderTarget = null; } if (this.device != null) { this.device.Dispose(); this.device = null; } }
/// <summary> /// Creates a DirectX 10 device and related device specific resources. /// </summary> /// <exception cref="InvalidOperationException"> /// A previous call to CreateResources has not been followed by a call to /// <see cref="FreeResources"/>. /// </exception> /// <exception cref="ObjectDisposedException"> /// <see cref="Dispose()"/> has been called on this instance. /// </exception> /// <exception cref="DirectX.DirectXException"> /// Unable to create a DirectX 10 device or an error occured creating /// device dependent resources. /// </exception> public void CreateResources() { this.ThrowIfDisposed(); if (this.device != null) { throw new InvalidOperationException("A previous call to CreateResources has not been followed by a call to FreeResources."); } // Try to create a hardware device first and fall back to a // software (WARP doens't let us share resources) var device1 = TryCreateDevice1(D3D10.DriverType.Hardware); if (device1 == null) { device1 = TryCreateDevice1(D3D10.DriverType.Software); if (device1 == null) { throw new DirectX.DirectXException("Unable to create a DirectX 10 device."); } } this.device = device1.QueryInterface <D3D10.D3DDevice>(); device1.Dispose(); }
/// <summary> /// Creates a DirectX 10 device and related device specific resources. /// </summary> /// <exception cref="InvalidOperationException"> /// A previous call to CreateResources has not been followed by a call to /// <see cref="FreeResources"/>. /// </exception> /// <exception cref="ObjectDisposedException"> /// <see cref="Dispose()"/> has been called on this instance. /// </exception> /// <exception cref="DirectX.DirectXException"> /// Unable to create a DirectX 10 device or an error occured creating /// device dependent resources. /// </exception> public void CreateResources() { this.ThrowIfDisposed(); if (this.device != null) { throw new InvalidOperationException("A previous call to CreateResources has not been followed by a call to FreeResources."); } // Try to create a hardware device first and fall back to a // software (WARP doens't let us share resources) var device1 = TryCreateDevice1(D3D10.DriverType.Hardware); if (device1 == null) { device1 = TryCreateDevice1(D3D10.DriverType.Software); if (device1 == null) { throw new DirectX.DirectXException("Unable to create a DirectX 10 device."); } } this.device = device1.QueryInterface<D3D10.D3DDevice>(); device1.Dispose(); }