// 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);
}
}
}