// MonoGame - Copyright (C) The MonoGame Team // This file is subject to the terms and conditions defined in // file 'LICENSE.txt', which is part of this source code package. using System; namespace Microsoft.Xna.Framework.Graphics { public abstract partial class Texture { internal SharpDX.Direct3D11.Resource _texture; private SharpDX.Direct3D11.ShaderResourceView _resourceView; /// /// Gets the handle to a shared resource. /// /// /// The handle of the shared resource, or if the texture was not /// created as a shared resource. /// public IntPtr GetSharedHandle() { using (var resource = _texture.QueryInterface()) return resource.SharedHandle; } internal abstract SharpDX.Direct3D11.Resource CreateTexture(); internal SharpDX.Direct3D11.Resource GetTexture() { if (_texture == null) _texture = CreateTexture(); return _texture; } internal SharpDX.Direct3D11.ShaderResourceView GetShaderResourceView() { if (_resourceView == null) _resourceView = CreateShaderResourceView(); return _resourceView; } protected virtual SharpDX.Direct3D11.ShaderResourceView CreateShaderResourceView() { return new SharpDX.Direct3D11.ShaderResourceView(GraphicsDevice._d3dDevice, GetTexture()); } private void PlatformGraphicsDeviceResetting() { SharpDX.Utilities.Dispose(ref _resourceView); SharpDX.Utilities.Dispose(ref _texture); } protected override void Dispose(bool disposing) { if (disposing) { SharpDX.Utilities.Dispose(ref _resourceView); SharpDX.Utilities.Dispose(ref _texture); } base.Dispose(disposing); } } }