OSDN Git Service

WASAPI排他の名前空間をWASAPIに修正。
[strokestylet/CsWin10Desktop3.git] / FDK24 / Utilities.cs
index 61b8e02..1eb7d0d 100644 (file)
@@ -94,10 +94,12 @@ namespace FDK
 
                /// <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;
@@ -110,7 +112,7 @@ namespace FDK
                                        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,
@@ -120,17 +122,45 @@ namespace FDK
                                                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