Пример #1
0
 public Graphics(DX11 dx11, CoreSettings settings)
 {
     LowLevel      = dx11;
     _settings     = settings;
     ImGuiRender   = dx11.ImGuiRender;
     SpritesRender = dx11.SpritesRender;
 }
Пример #2
0
 public Graphics(RenderForm form, int width, int height)
 {
     reset = () => form.Invoke(new Action(() =>
     {
         device.Reset(presentParameters);
         fontRenderer.Flush();
         textureRenderer.Flush();
         resized = false;
     }));
     form.UserResized += (sender, args) => Resize(form.ClientSize.Width, form.ClientSize.Height);
     presentParameters = new PresentParameters
     {
         Windowed             = true,
         SwapEffect           = SwapEffect.Discard,
         BackBufferFormat     = Format.A8R8G8B8,
         BackBufferCount      = 1,
         BackBufferWidth      = width,
         BackBufferHeight     = height,
         PresentationInterval = PresentInterval.One,
         MultiSampleType      = MultisampleType.None,
         MultiSampleQuality   = 0,
         PresentFlags         = PresentFlags.LockableBackBuffer
     };
     direct3D        = new Direct3DEx();
     device          = new DeviceEx(direct3D, 0, DeviceType.Hardware, form.Handle, CREATE_FLAGS, presentParameters);
     fontRenderer    = new FontRenderer(device);
     textureRenderer = new TextureRenderer(device);
     imguiRenderer   = new ImGuiRender(device, form);
     renderLocker.Reset();
 }
Пример #3
0
        /// <summary>
        ///     Implementation of capturing from the render target of the Direct3D9 Device (or DeviceEx)
        /// </summary>
        /// <param name="device"></param>
        private void DoCaptureRenderTarget(Device device, string hook)
        {
            if (CaptureThisFrame)

            #region CompasRenderLoop

            {
                try
                {
                    if (imGuiRender == null && device != null && device.NativePointer != IntPtr.Zero)
                    {
                        Trace.Write("Creating ImGui");
                        var handle = CurrentProcess.MainWindowHandle;
                        var rect   = new NativeMethods.Rect();
                        NativeMethods.GetWindowRect(handle, ref rect);
                        _sprite = ToDispose(new Sprite(device));
                        IntialiseElementResources(device);
                        imGuiRender = ToDispose(new ImGuiRender(device, rect, Interface, handle));
                    }
                    else if (imGuiRender != null)
                    {
                        if (Services.CompassSettings.ShowFPS)
                        {
                            PerfomanseTester.Reset();
                            PerfomanseTester.Start();
                        }
                        _sprite.Begin(SpriteFlags.AlphaBlend);
                        imGuiRender.GetNewFrame();

                        var CompassViewModel = PacketProcessor.Instance?.CompassViewModel;
                        CompassViewModel?.Render(_sprite);

                        //if (UIState.SettingsOpened)
                        //    ImGuiNative.igShowDemoWindow(ref UIState.OverlayOpened);
                        if (Services.CompassSettings.ShowFPS)
                        {
                            var draw_list = ImGui.GetOverlayDrawList();
                            draw_list.AddText(new Vector2(10, 100), $"RenderingTime(ms) = {Elapsed.Milliseconds}", Color.Red.ToDx9ARGB());
                            draw_list.AddImageRounded((IntPtr)_imageCache["incombat.png"], new Vector2(64, 64), new Vector2(100, 100), new Vector2(100, 100), Vector2.One,
                                                      Color.Red.ToDx9ARGB(), 2, 4);
                            //bool r=true;
                            //    ImGuiNative.igShowDemoWindow(ref r);
                        }

                        imGuiRender.Draw();
                        _sprite.End();
                        if (Services.CompassSettings.ShowFPS && PerfomanseTester.IsRunning)
                        {
                            PerfomanseTester.Stop();
                            Elapsed = PerfomanseTester.Elapsed;
                        }
                    }
                }
                catch (Exception e)
                {
                    DebugMessage(e.ToString());
                }
            }

            #endregion
        }
Пример #4
0
        /// <summary>
        ///     Implementation of capturing from the render target of the Direct3D9 Device (or DeviceEx)
        /// </summary>
        /// <param name="device"></param>
        private void DoCaptureRenderTarget(Device device, string hook)
        {
            FPS.Frame();
            if (CaptureThisFrame)

            #region CompasRenderLoop

            {
                try
                {
                    if (imGuiRender == null && device != null && device.NativePointer != IntPtr.Zero)
                    {
                        Trace.Write("Creating ImGui");
                        var handle = CurrentProcess.MainWindowHandle;
                        var rect   = new NativeMethods.Rect();
                        NativeMethods.GetWindowRect(handle, ref rect);
                        _sprite = ToDispose(new Sprite(device));
                        IntialiseElementResources(device);
                        imGuiRender = ToDispose(new ImGuiRender(device, rect, Interface, CurrentProcess));
                    }
                    else if (imGuiRender != null)
                    {
                        if (Services.CompassSettings.ShowRenderTime)
                        {
                            PerfomanseTester.Reset();
                            PerfomanseTester.Start();
                        }
                        else if (PerfomanseTester.IsRunning)
                        {
                            PerfomanseTester.Stop();
                        }

                        _sprite.Begin(SpriteFlags.AlphaBlend);

                        imGuiRender.GetNewFrame();
                        var CompassViewModel = PacketProcessor.Instance?.CompassViewModel;
                        CompassViewModel?.Render(_sprite);
                        //ImGui.ShowDemoWindow();
                        if (Services.CompassSettings.ShowRenderTime)
                        {
                            var draw_list = ImGui.GetOverlayDrawList();
                            draw_list.AddText(new Vector2(10, 100), $"RenderingTime(ms) = {Elapsed.Milliseconds}", Color.Red.ToDx9ARGB());
                            draw_list.AddText(new Vector2(10, 50), DateTime.Now.ToString("HH: mm:ss.fff"), Color.White.ToDx9ARGB());
                        }
                        if (Services.CompassSettings.ShowFPS)
                        {
                            ImGui.SetNextWindowBgAlpha(0);

                            if (ImGui.Begin("FPS counter", ref Services.CompassSettings._showFps, ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.AlwaysAutoResize))
                            {
                                ImGui.SetWindowFontScale(1.3F);
                                ImGui.Text($"{FPS.GetFPS():n0} fps");
                            }
                            ImGui.End();
                        }
                        _sprite.End();
                        imGuiRender.Draw();

                        if (Services.CompassSettings.ShowRenderTime && PerfomanseTester.IsRunning)
                        {
                            PerfomanseTester.Stop();
                            Elapsed = PerfomanseTester.Elapsed;
                        }
                    }
                }
                catch (Exception e)
                {
                    DebugMessage(e.ToString());
                    _sprite.End();
                }
            }

            #endregion
        }