You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Remote ImGui is an extension for https://github.com/ocornut/imgui (currently 1.3), sending output and receiving input from a target client in another device running an HTML5/WebGL/WebSockets(v13) application.
You will view all ImGui output from host app, but can also set a bigger virtual canvas and drag windows around. Use Ctrl+LeftMouse on web client to move around it.
Client also sends input from mouse/keyboard, allowing interaction with host app.
Using Chrome works out of the box; on Firefox you have to toggle network.websocket.allowInsecureFromHTTPS in about:config to true
Setup Host
#include "../imgui_remote.h"
RemoteInit to initialize: void ImGui::RemoteInit(bind_address, bind_port, vcanvas_width, vcanvas_height);
RemoteUpdate on update to pump network code: void ImGui::RemoteUpdate();
RemoteDraw on render to send render data to client: void ImGui::RemoteDraw(cmd_lists, cmd_lists_count);
RemoteShutdown to terminate: void ImGui::RemoteShutdown();
RemoteGetInput to get input from remote: bool ImGui::RemoteGetInput(input);
Check app/example for a working example (ImGui 1.3 included).
RemoteInput might conflict with your actual app input, you will have to decide which one is focused and decide what input send to ImGui.
I've used Webby for the WebSocketServer connection. It supports Win32 + Unix, but it should be easy to add other platforms. I included Webby on the repo as I added a function to allow sending WebSocket packets in a single frame.
Setup Client
Double click index.html, add your host address and click connect. You can also create an autoconnect index.html bookmark with index.html?host=address