Advertisement
LimeStreem

DirectWriteとDirect3D11を同時に扱う

Aug 6th, 2013
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.97 KB | None | 0 0
  1. using SlimDX.Direct3D11;
  2. using SlimDX.DXGI;
  3. using Device1 = SlimDX.Direct3D10_1.Device1;
  4. using Resource = SlimDX.DXGI.Resource;
  5. using Texture2D11 = SlimDX.Direct3D11.Texture2D;
  6. using Texture2D10 = SlimDX.Direct3D10.Texture2D;
  7. using FactoryD2D = SlimDX.Direct2D.Factory;
  8. using FactoryDW = SlimDX.DirectWrite.Factory;
  9. using FeatureLevel11 = SlimDX.Direct3D11.FeatureLevel;
  10. using FeatureLevel10 = SlimDX.Direct3D10_1.FeatureLevel;
  11. namespace HogeApp.CG
  12. {
  13.     public class D2DSupportedDeviceManager:BasicGraphicDeviceManager
  14.     {
  15.         /// <summary>
  16.         /// Direct2D/DirectWrite用DirectX10デバイス
  17.         /// </summary>
  18.         public Device1 Device10_1 { get; private set; }
  19.  
  20.         public Texture2D11 TextureD3D_11 { get; private set; }
  21.  
  22.         public Texture2D10 TextureD3D_10 { get; private set; }
  23.  
  24.         public Resource SharedResource { get; private set; }
  25.  
  26.         public KeyedMutex MutexD3D11 { get; private set; }
  27.  
  28.         public KeyedMutex MutexD3D10 { get; private set; }
  29.  
  30.  
  31.         protected override void PostLoad(System.Windows.Forms.Control form)
  32.         {
  33.             //Direct2D/DirectWrite用のDirect3D10のデバイスを作成する
  34.             Device10_1 = new Device1(adapter1, SlimDX.Direct3D10.DriverType.Hardware, SlimDX.Direct3D10.DeviceCreationFlags.BgraSupport | SlimDX.Direct3D10.DeviceCreationFlags.Debug,FeatureLevel10.Level_10_0);
  35.             //D3D11用のテクスチャの作成
  36.             TextureD3D_11 = new Texture2D11
  37.             (Device,
  38.             new Texture2DDescription()
  39.             {
  40.                 Width=form.Width,
  41.                 Height=form.Height,
  42.                 MipLevels=1,
  43.                 ArraySize=1,
  44.                 Format=Format.R8G8B8A8_UNorm,
  45.                 SampleDescription=new SampleDescription(1,0),
  46.                 Usage=ResourceUsage.Default,
  47.                 BindFlags=BindFlags.RenderTarget|BindFlags.ShaderResource,
  48.                 CpuAccessFlags=CpuAccessFlags.None,
  49.                 OptionFlags=ResourceOptionFlags.KeyedMutex
  50.             });
  51.             //テクスチャをシェアする
  52.             SharedResource = new Resource(TextureD3D_11);
  53.             TextureD3D_10 = Device10_1.OpenSharedResource<Texture2D10>(SharedResource.SharedHandle);//ココで例外・・・
  54.  
  55.             ////Direct2Dの初期化を行う
  56.             //FactoryD2D factoryd2d = new FactoryD2D(SlimDX.Direct2D.FactoryType.SingleThreaded, SlimDX.Direct2D.DebugLevel.Information);
  57.             //FactoryDW factorydw = new FactoryDW(SlimDX.DirectWrite.FactoryType.Isolated);
  58.             //factoryd2d.Dispose();
  59.             //factorydw.Dispose();
  60.         }
  61.  
  62.  
  63.         public override void Dispose()
  64.         {
  65.             base.Dispose();
  66.             Device10_1.Dispose();
  67.             TextureD3D_11.Dispose();
  68.             //TextureD3D_10.Dispose();
  69.             //TextureD3D_10.Dispose();
  70.             //MutexD3D10.Dispose();
  71.            // MutexD3D11.Dispose();
  72.             SharedResource.Dispose();
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement