Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using SlimDX.Direct3D11;
- using SlimDX.DXGI;
- using Device1 = SlimDX.Direct3D10_1.Device1;
- using Resource = SlimDX.DXGI.Resource;
- using Texture2D11 = SlimDX.Direct3D11.Texture2D;
- using Texture2D10 = SlimDX.Direct3D10.Texture2D;
- using FactoryD2D = SlimDX.Direct2D.Factory;
- using FactoryDW = SlimDX.DirectWrite.Factory;
- using FeatureLevel11 = SlimDX.Direct3D11.FeatureLevel;
- using FeatureLevel10 = SlimDX.Direct3D10_1.FeatureLevel;
- namespace HogeApp.CG
- {
- public class D2DSupportedDeviceManager:BasicGraphicDeviceManager
- {
- /// <summary>
- /// Direct2D/DirectWrite用DirectX10デバイス
- /// </summary>
- public Device1 Device10_1 { get; private set; }
- public Texture2D11 TextureD3D_11 { get; private set; }
- public Texture2D10 TextureD3D_10 { get; private set; }
- public Resource SharedResource { get; private set; }
- public KeyedMutex MutexD3D11 { get; private set; }
- public KeyedMutex MutexD3D10 { get; private set; }
- protected override void PostLoad(System.Windows.Forms.Control form)
- {
- //Direct2D/DirectWrite用のDirect3D10のデバイスを作成する
- Device10_1 = new Device1(adapter1, SlimDX.Direct3D10.DriverType.Hardware, SlimDX.Direct3D10.DeviceCreationFlags.BgraSupport | SlimDX.Direct3D10.DeviceCreationFlags.Debug,FeatureLevel10.Level_10_0);
- //D3D11用のテクスチャの作成
- TextureD3D_11 = new Texture2D11
- (Device,
- new Texture2DDescription()
- {
- Width=form.Width,
- Height=form.Height,
- MipLevels=1,
- ArraySize=1,
- Format=Format.R8G8B8A8_UNorm,
- SampleDescription=new SampleDescription(1,0),
- Usage=ResourceUsage.Default,
- BindFlags=BindFlags.RenderTarget|BindFlags.ShaderResource,
- CpuAccessFlags=CpuAccessFlags.None,
- OptionFlags=ResourceOptionFlags.KeyedMutex
- });
- //テクスチャをシェアする
- SharedResource = new Resource(TextureD3D_11);
- TextureD3D_10 = Device10_1.OpenSharedResource<Texture2D10>(SharedResource.SharedHandle);//ココで例外・・・
- ////Direct2Dの初期化を行う
- //FactoryD2D factoryd2d = new FactoryD2D(SlimDX.Direct2D.FactoryType.SingleThreaded, SlimDX.Direct2D.DebugLevel.Information);
- //FactoryDW factorydw = new FactoryDW(SlimDX.DirectWrite.FactoryType.Isolated);
- //factoryd2d.Dispose();
- //factorydw.Dispose();
- }
- public override void Dispose()
- {
- base.Dispose();
- Device10_1.Dispose();
- TextureD3D_11.Dispose();
- //TextureD3D_10.Dispose();
- //TextureD3D_10.Dispose();
- //MutexD3D10.Dispose();
- // MutexD3D11.Dispose();
- SharedResource.Dispose();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement