/// <summary>
/// 画像ファイルからシェーダリソースビューを作成して返す。
- /// D3DX11CreateShaderResourceViewFromFile() の代わり。
/// </summary>
+ /// <remarks>
+ /// (参考: http://qiita.com/oguna/items/c516e09ee57d931892b6 )
+ /// </remarks>
public static SharpDX.Direct3D11.ShaderResourceView CreateShaderResourceViewFromFile(
- SharpDX.Direct3D11.Device d3dDevice, string 画像ファイルパス, out SharpDX.Size2F ビューのサイズ )
+ SharpDX.Direct3D11.Device d3dDevice, SharpDX.Direct3D11.BindFlags bindFlags, string 画像ファイルパス, out SharpDX.Size2F ビューのサイズ, out SharpDX.Direct3D11.Texture2D テクスチャ )
{
ビューのサイズ = new SharpDX.Size2F( 0, 0 );
var srv = (SharpDX.Direct3D11.ShaderResourceView) null;
var dataBox = new[] { new SharpDX.DataBox( ロック領域.Scan0, bitmap.Width * 4, bitmap.Height ) };
var textureDesc = new SharpDX.Direct3D11.Texture2DDescription() {
ArraySize = 1,
- BindFlags = SharpDX.Direct3D11.BindFlags.ShaderResource,
+ BindFlags = bindFlags,
CpuAccessFlags = SharpDX.Direct3D11.CpuAccessFlags.None,
Format = SharpDX.DXGI.Format.B8G8R8A8_UNorm,
Height = bitmap.Height,
SampleDescription = new SharpDX.DXGI.SampleDescription( 1, 0 ),
Usage = SharpDX.Direct3D11.ResourceUsage.Default
};
- using( var texture = new SharpDX.Direct3D11.Texture2D( d3dDevice, textureDesc, dataBox ) )
- {
- bitmap.UnlockBits( ロック領域 );
- srv = new SharpDX.Direct3D11.ShaderResourceView( d3dDevice, texture );
- }
+ var texture = new SharpDX.Direct3D11.Texture2D( d3dDevice, textureDesc, dataBox );
+ bitmap.UnlockBits( ロック領域 );
+ srv = new SharpDX.Direct3D11.ShaderResourceView( d3dDevice, texture );
+
+ // 戻り値2:テクスチャ
+ テクスチャ = texture;
}
// 戻り値1:ビューのサイズ
ビューのサイズ = new SharpDX.Size2F( 画像の矩形.Width, 画像の矩形.Height );
}
- // æ\88»ã\82\8aå\80¤ï¼\92:シェーダリソースビュー
+ // æ\88»ã\82\8aå\80¤ï¼\93:シェーダリソースビュー
return srv;
}
+
+ /// <summary>
+ /// 空のテクスチャとそのシェーダーリソースビューを作成し、返す。
+ /// </summary>
+ public static SharpDX.Direct3D11.ShaderResourceView CreateShaderResourceView(
+ SharpDX.Direct3D11.Device d3dDevice, SharpDX.Direct3D11.BindFlags bindFlags, SharpDX.Size2 サイズdpx, out SharpDX.Direct3D11.Texture2D テクスチャ )
+ {
+ var textureDesc = new SharpDX.Direct3D11.Texture2DDescription() {
+ ArraySize = 1,
+ BindFlags = bindFlags,
+ CpuAccessFlags = SharpDX.Direct3D11.CpuAccessFlags.None,
+ Format = SharpDX.DXGI.Format.B8G8R8A8_UNorm,
+ Height = サイズdpx.Height,
+ Width = サイズdpx.Width,
+ MipLevels = 1,
+ OptionFlags = SharpDX.Direct3D11.ResourceOptionFlags.None,
+ SampleDescription = new SharpDX.DXGI.SampleDescription( 1, 0 ),
+ Usage = SharpDX.Direct3D11.ResourceUsage.Default
+ };
+ var texture = new SharpDX.Direct3D11.Texture2D( d3dDevice, textureDesc );
+
+ // 戻り値1:テクスチャ
+ テクスチャ = texture;
+
+ // 戻り値2:シェーダリソースビュー
+ return new SharpDX.Direct3D11.ShaderResourceView( d3dDevice, texture );
+ }
}
-}
+}
\ No newline at end of file