コード例 #1
0
ファイル: D3D11.cs プロジェクト: Grafalck/Questor
        public override void Initialize()
        {
            Device tmpDevice;
            SwapChain sc;
            using (var rf = new RenderForm())
            {
                var desc = new SwapChainDescription
                {
                    BufferCount = 1,
                    Flags = SwapChainFlags.None,
                    IsWindowed = true,
                    ModeDescription = new ModeDescription(100, 100, new Rational(60, 1), SlimDX.DXGI.Format.R8G8B8A8_UNorm),
                    OutputHandle = rf.Handle,
                    SampleDescription = new SampleDescription(1, 0),
                    SwapEffect = SwapEffect.Discard,
                    Usage = Usage.RenderTargetOutput
                };

                var res = Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, desc, out tmpDevice, out sc);
                if (res.IsSuccess)
                {
                    using (tmpDevice)
                    {
                        using (sc)
                        {
                            PresentPointer = Pulse.Magic.GetObjectVtableFunction(sc.ComPointer, VMT_PRESENT);
                            ResetTargetPointer = Pulse.Magic.GetObjectVtableFunction(sc.ComPointer, VMT_RESIZETARGET);
                        }
                    }
                }
            }

            _presentDelegate = Pulse.Magic.RegisterDelegate<Direct3D11Present>(PresentPointer);
            _presentHook = Pulse.Magic.Detours.CreateAndApply(_presentDelegate, new Direct3D11Present(Callback), "D11Present");
        }
コード例 #2
0
ファイル: D3D11.cs プロジェクト: trewq34213/AthenaInjected
        public override void Initialize()
        {
            Device    tmpDevice;
            SwapChain sc;

            using (var rf = new RenderForm())
            {
                var desc = new SwapChainDescription
                {
                    BufferCount     = 1,
                    Flags           = SwapChainFlags.None,
                    IsWindowed      = true,
                    ModeDescription =
                        new ModeDescription(100, 100, new Rational(60, 1), Format.R8G8B8A8_UNorm),
                    OutputHandle      = rf.Handle,
                    SampleDescription = new SampleDescription(1, 0),
                    SwapEffect        = SwapEffect.Discard,
                    Usage             = Usage.RenderTargetOutput
                };

                Result res = Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.None, desc,
                                                        out tmpDevice, out sc);
                if (res.IsSuccess)
                {
                    using (tmpDevice)
                    {
                        using (sc)
                        {
                            PresentPointer     = GeneralHelper.Memory.GetVFTableEntry(sc.ComPointer, VMT_PRESENT);
                            ResetTargetPointer = GeneralHelper.Memory.GetVFTableEntry(sc.ComPointer,
                                                                                      VMT_RESIZETARGET);
                        }
                    }
                }
            }

            _presentDelegate = GeneralHelper.Memory.CreateFunction <Direct3D11Present>(PresentPointer);
            _presentHook     = GeneralHelper.Memory.Detours.CreateAndApply(_presentDelegate, new Direct3D11Present(Callback),
                                                                           "D11Present");
        }