// Copyright (c) 2010-2014 SharpDX - Alexandre Mutel // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. using System; using System.IO; namespace SharpDX.Direct3D10 { public partial class ShaderResourceView { /// /// Creates a for accessing resource data. /// /// The device to use when creating this . /// The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. /// ID3D10Device::CreateShaderResourceView public ShaderResourceView(Device device, Resource resource) : base(IntPtr.Zero) { device.CreateShaderResourceView(resource, null, this); } /// /// Creates a for accessing resource data. /// /// The device to use when creating this . /// The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. /// A structure describing the to be created. /// ID3D10Device::CreateShaderResourceView public ShaderResourceView(Device device, Resource resource, ShaderResourceViewDescription description) : base(IntPtr.Zero) { device.CreateShaderResourceView(resource, description, this); } /// /// Create a shader-resource view from a file. Read the characteristics of a texture when the texture is loaded. /// /// A reference to the device (see ) that will use the resource. /// Name of the file that contains the shader-resource view. /// Returns a reference to the shader-resource view (see ). /// HRESULT D3DX10CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) public static ShaderResourceView FromFile(Device device, string fileName) { ShaderResourceView temp; Result hResult; D3DX10.CreateShaderResourceViewFromFile(device, fileName, null, IntPtr.Zero, out temp, out hResult); return temp; } /// /// Create a shader-resource view from a file. /// /// A reference to the device (see ) that will use the resource. /// Name of the file that contains the shader-resource view. /// Identifies the characteristics of a texture (see ) when the data processor is created. /// Returns a reference to the shader-resource view (see ). /// HRESULT D3DX10CreateShaderResourceViewFromFileW([None] ID3D10Device* pDevice,[None] const wchar_t* pSrcFile,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) public static ShaderResourceView FromFile(Device device, string fileName, ImageLoadInformation loadInformation) { ShaderResourceView temp; Result hResult; D3DX10.CreateShaderResourceViewFromFile(device, fileName, loadInformation, IntPtr.Zero, out temp, out hResult); return temp; } /// /// Create a shader-resource view from a file in memory. /// /// A reference to the device (see ) that will use the resource. /// Pointer to a memory location that contains the shader-resource view. /// Returns a reference to the shader-resource view (see ). /// HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) public static ShaderResourceView FromMemory(Device device, byte[] memory) { unsafe { ShaderResourceView temp; Result hResult; fixed (void *pMemory = &memory[0]) D3DX10.CreateShaderResourceViewFromMemory(device, new IntPtr(pMemory), memory.Length, null, IntPtr.Zero, out temp, out hResult); // TODO test hResult? return temp; } } /// /// Create a shader-resource view from a file in memory. /// /// A reference to the device (see ) that will use the resource. /// Pointer to a memory location that contains the shader-resource view. /// Identifies the characteristics of a texture (see ) when the data processor is created. /// Returns a reference to the shader-resource view (see ). /// HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) public static ShaderResourceView FromMemory(Device device, byte[] memory, ImageLoadInformation loadInformation) { unsafe { ShaderResourceView temp; Result hResult; fixed (void* pMemory = &memory[0]) D3DX10.CreateShaderResourceViewFromMemory(device, new IntPtr(pMemory), memory.Length, loadInformation, IntPtr.Zero, out temp, out hResult); return temp; } } /// /// Create a shader-resource view from a file in a stream.. /// /// A reference to the device (see ) that will use the resource. /// Pointer to the file in memory that contains the shader-resource view. /// Size of the file to read from the stream /// Returns a reference to the shader-resource view (see ). /// HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) public static ShaderResourceView FromStream(Device device, Stream stream, int sizeInBytes) { byte[] memory = Utilities.ReadStream(stream, ref sizeInBytes); return FromMemory(device, memory); } /// /// Create a shader-resource view from a file in a stream.. /// /// A reference to the device (see ) that will use the resource. /// Pointer to the file in memory that contains the shader-resource view. /// Size of the file to read from the stream /// Identifies the characteristics of a texture (see ) when the data processor is created. /// Returns a reference to the shader-resource view (see ). /// HRESULT D3DX10CreateShaderResourceViewFromMemory([None] ID3D10Device* pDevice,[None] const void* pSrcData,[None] SIZE_T SrcDataSize,[In, Optional] D3DX10_IMAGE_LOAD_INFO* pLoadInfo,[None] ID3DX10ThreadPump* pPump,[None] ID3D10ShaderResourceView** ppShaderResourceView,[None] HRESULT* pHResult) public static ShaderResourceView FromStream(Device device, Stream stream, int sizeInBytes, ImageLoadInformation loadInformation) { byte[] memory = Utilities.ReadStream(stream, ref sizeInBytes); return FromMemory(device, memory, loadInformation); } } }