Remote ImGui 项目教程
1、项目介绍
Remote ImGui 是一个扩展项目,旨在为 ocornut/imgui 提供远程访问功能。该项目允许用户在另一台设备上通过 HTML5/WebGL/WebSockets 应用程序查看和交互 ImGui 的输出。用户可以在主机应用程序中查看所有的 ImGui 输出,并且可以通过设置更大的虚拟画布来拖动窗口。此外,客户端还可以发送鼠标和键盘输入,从而与主机应用程序进行交互。
2、项目快速启动
环境准备
确保你已经安装了以下依赖:
- LZ4
- Modified Webby
- ThreeJS
- Dat.Gui
- Modified LZ4.js
快速启动步骤
-
克隆项目
git clone https://github.com/JordiRos/remoteimgui.git cd remoteimgui
-
编译主机端
在主机端代码中包含
imgui_remote.h
头文件,并初始化 Remote ImGui:#include "imgui_remote.h" void InitializeRemoteImGui() { ImGui::RemoteInit("bind_address", "bind_port", vcanvas_width, vcanvas_height); } void UpdateRemoteImGui() { ImGui::RemoteUpdate(); } void RenderRemoteImGui() { ImGui::RemoteDraw(cmd_lists, cmd_lists_count); } void ShutdownRemoteImGui() { ImGui::RemoteShutdown(); } bool GetRemoteInput(InputType& input) { return ImGui::RemoteGetInput(input); }
-
启动客户端
在客户端设备上,双击
index.html
,添加主机地址并点击连接。你也可以创建一个自动连接的书签,例如:index.html?host=address
3、应用案例和最佳实践
应用案例
- 远程调试工具:开发者可以在远程设备上查看和操作 ImGui 界面,方便调试和测试。
- 跨设备交互:用户可以在手机或平板电脑上通过 Web 浏览器与主机应用程序进行交互,适用于需要远程控制的场景。
最佳实践
- 输入冲突处理:在主机端代码中,确保正确处理输入冲突,决定哪个输入源是焦点,并决定发送哪些输入到 ImGui。
- 安全性:在使用 WebSockets 时,确保在 Firefox 中启用
network.websocket.allowInsecureFromHTTPS
设置,以避免安全问题。
4、典型生态项目
- ocornut/imgui:Remote ImGui 的基础项目,提供了 ImGui 的核心功能。
- sammyfreg/netImgui:另一个远程访问 ImGui 的项目,支持将 ImGui 的 UI 渲染转发到远程 PC。
- Unreal NetImgui:Unreal Engine 4 插件,增加了对 Dear ImGui 和 NetImgui 功能的访问。
通过以上步骤,你可以快速启动并使用 Remote ImGui 项目,实现远程访问和控制 ImGui 界面的功能。