All Projects → sammyfreg → Netimgui

sammyfreg / Netimgui

Licence: mit
'Dear Imgui' remote access library and application

Labels

Projects that are alternatives of or similar to Netimgui

Jimgui
💖 Pure Java binding for dear-imgui
Stars: ✭ 113 (-40.21%)
Mutual labels:  imgui
Sequentity
A single-file, immediate-mode sequencer widget for C++17, Dear ImGui and EnTT
Stars: ✭ 134 (-29.1%)
Mutual labels:  imgui
Imgui Ws
Dear ImGui over WebSockets
Stars: ✭ 165 (-12.7%)
Mutual labels:  imgui
Qtimgui
Qt (QOpenGLWidget / QOpenGLWindow) backend for ImGui
Stars: ✭ 119 (-37.04%)
Mutual labels:  imgui
Node editor framework
A flexible and modular Node Editor Framework for creating node based displays and editors in Unity
Stars: ✭ 1,751 (+826.46%)
Mutual labels:  imgui
Wave Particles With Interactive Vortices
A dx12 river renderer using wave particles with interactive vortices.
Stars: ✭ 144 (-23.81%)
Mutual labels:  imgui
Luajit Imgui
LuaJIT ffi binding for imgui, backends and extension widgets
Stars: ✭ 107 (-43.39%)
Mutual labels:  imgui
Vxr
General purpose engine written in C++ with emphasis on materials rendering (PBR, clear coat, anisotropy, iridescence)
Stars: ✭ 181 (-4.23%)
Mutual labels:  imgui
Imgui
Immediate Mode GUI for C#
Stars: ✭ 133 (-29.63%)
Mutual labels:  imgui
Imguifontstudio
Font Helper Gui Tool for programming
Stars: ✭ 149 (-21.16%)
Mutual labels:  imgui
Hello imgui
Hello, Dear ImGui: cross-platform Gui apps for Windows / Mac / Linux / iOS / Android / Emscripten with the simplicity of a "Hello World" app
Stars: ✭ 120 (-36.51%)
Mutual labels:  imgui
Nukleardotnet
.NET binding for the Nuklear immediate mode GUI
Stars: ✭ 126 (-33.33%)
Mutual labels:  imgui
Bimpy
imgui for python
Stars: ✭ 144 (-23.81%)
Mutual labels:  imgui
Implot
Immediate Mode Plotting
Stars: ✭ 2,014 (+965.61%)
Mutual labels:  imgui
Libtorch Yolov3 Deepsort
Stars: ✭ 165 (-12.7%)
Mutual labels:  imgui
Osiris
Free open-source game cheat for Counter-Strike: Global Offensive, written in modern C++. GUI powered by Dear ImGui.
Stars: ✭ 1,851 (+879.37%)
Mutual labels:  imgui
Imgui sdl
ImGuiSDL: SDL2 based renderer for Dear ImGui
Stars: ✭ 134 (-29.1%)
Mutual labels:  imgui
Imguizmo.quat
ImGui GIZMO widget - 3D object manipulator / orientator
Stars: ✭ 187 (-1.06%)
Mutual labels:  imgui
Webgui
An example demo of IMGUI (Immediate Mode GUI) on the web. Using only WebGL, GLFW and ImGui. Suitable for being compiled to web assembly (WASM).
Stars: ✭ 180 (-4.76%)
Mutual labels:  imgui
Rapidgui
Unity OnGUI(IMGUI) extensions for Rapid prototyping/development
Stars: ✭ 144 (-23.81%)
Mutual labels:  imgui

Summary

NetImgui is a library to remotely display and control Dear ImGui menus with an associated NetImgui Server application. Designed to painlessly integrate into existing codebase with few changes required. It allows any program using Dear ImGui to receives input from a remote PC and then forwards its UI rendering to it (textures, vertices, indices, draw commands).

NetImgui

Purpose

Initially created to assist game developers in debugging their game running on a game console or smartphone, from a PC. However, its use extends to wider applications. The only requirements are that a program is using Dear ImGui using C++ and available TCP/IP communications.

1. UI access with applications without display or input.

Some applications lack display and inputs access, preventing feedbacks and easy control. It could be a program running on a Raspberry Pie device, or Unreal 4 running in server mode, etc. . Using NetImgui allows the display of a user interface with full control on your PC while the logic remains on the client application itself.

2. Ease of use

While inputs might be available on a particular device (keyboard, gamepad, ...), it might still not be convenient for certain aspect. For example, your smartphone might offer text input, but a full screen window with a physical keyboard is still more comfortable. Idem for a gaming console with gamepad control or VR development.

3. Declutter display

Dear ImGui is often used to display relevant debug information during development, but UI elements can obscure the regular content. NetImgui sends the UI content to a remote window, leaving the original display clutter-free and with the freedom to use the entire screen for more elaborate content.

Before

DearImGui

With NetImgui

NetImgui

How it works

Here is a quick overview of the logic behind using the NetImgui Server and one (or more) program using the NetImgui Client code.

NetImgui

1. (NetImgui Server) Capture user's inputs with mouse/keyboard

2. (NetImgui Server) Send the Inputs to client and request a draw update

3. (NetImgui Client) Draw the Dear ImGui content normally (without need to display on client)

4. (NetImgui Client) Send the drawing results to server

5. (NetImgui Server) Receives the drawing result and display them

6. Repeat the process

Note

The NetImgui Server application currently compiles under Windows, but few changes are required to properly have it running under other Operating Systems.

Integration

  • Download the latest version of the NetImgui library.

  • Add the content of Code\Client to your codebase.

  • In your codebase:

    • [once]
      • Call NetImgui::Startup() (at program start).
      • Call NetImgui::ConnectToApp() or NetImgui::ConnectFromApp().
      • Call NetImgui::Shutdown() (at program exit).
    • [every redraw]
      • Draw your ImGui menu as usual.
      • If Dear ImGui 1.80 and lower (or want frameskip support).
        • Replace call to ImGui::NewFrame() with NetImgui::NewFrame().
        • Replace call to ImGui::Render() / ImGui::EndFrame() with NetImgui::EndFrame().
  • Start the NetImgui server application and connect your application to it

  • More integration details can be found on the Wiki. Multiple samples are also included, providing additional insights

Note

  • Connection between NetImgui Server and a netImGui Client can be achieved in 4 different ways.

  • Server waits for connection and :

    • (A) Client calls ConnectToApp() with the Server address.
  • Client calls ConnectFromApp() then waits for connection and :

    • (B) Server configure the Client's address and connect to it.
    • (C) Server is launched with the Client's address in the commandline.
    • (D) Server receives a Client's address from another application, through Windows named pipe : \.\pipe\netImgui'.
  • Advanced: Different Dear ImGui content can be displayed locally and remotely at the same time. Look at SampleDualUI for more information.

  • NetImgui::IsConnected() and NetImgui::IsDrawingRemote() can be used during Dear ImGui drawing, helping to make selective decisions on the content to draw based on where it will be displayed.

Dear Imgui versions

  • Tested against Dear ImGui versions: 1.74, 1.75, 1.76, 1.76 (docking), 1.77, 1.78, 1.79, 1.80, 1.80 (docking), 1.81.
  • Note: Should support other versions without too much difficulties.

Related

Related projects making use of NetImgui.

  • Unreal ImGui : Unreal4 Plugin adding Dear ImGui support and allowing to display ImGui content over a game or editor. The net_imgui branch of this repository contains an integration of the NetImgui library for remote access and is ready to go.
  • Unreal NetImgui : Unreal4 plugin also adding access to Dear ImGui and NetImgui. Unlike the previous plugin, it is a simple implementation with only remote access possible (no ImGui drawing over the game).

Release notes

To do

  • Add compression to data between Client and Server
  • Support of additional texture formats
  • Handle Linear/sRGB vertex color format
  • Add logging information in NetImgui Server application
  • Profile and optimize performances
  • Add new Dear ImGui multi windows support (docking branch)
  • Commands to assign custom backgrounds

Version 1.4

(2021/03/13)

  • API Changes
    • Added SetBackground(...) letting user configure the client window background appearance
      • The new sample SampleBackground demonstrate its usage.
    • Removed support of empty API functions when NETIMGUI_ENABLED is false
      • Keeps NetImgui client code clutter to minimum.
  • New
    • Auto interception of Dear ImGui ImGui::NewFrame() / ImGui::Render()
      • Using Dear ImGui 1.81's Callbacks support, replacing theses Dear ImGui functions call with NetImgui::NewFrame() / NetImgui::EndFrame() can now be avoided
      • This means less changes to existing codebase wanting to use NetImgui, only requiring a single call to :
        • Startup
        • Shutdown
        • ConnectToApp or ConnectFromApp
      • However, calling directly NetImgui::NewFrame() / NetImgui::EndFrame() has the additional benefit of being able to skip drawing when not needed

Older

Release Notes

Contact

Author can be reached for feedbacks / comments at: sammyfreg (at) gmail . com or through GitHub Issues report.

Credits

Sincere thanks to Omar Cornut for the incredible work on Dear ImGui.

Support of image formats via stb_image.h by Sean Barrett (public domain).

Support of Solutions generation via Sharpmake by Ubisoft (public domain).

Support of Posix sockets thanks to Aaron Lieberman.

Support of json save file via nlohmann json

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].