ImGUI連携
ImGUIプラグイン(Promete.ImGui)を利用することで、アプリケーションにImGUIベースのUIを組み込むことができます。
インストール
Section titled “インストール”ImGUI連携を利用するには、外部NuGetパッケージ Promete.ImGui をプロジェクトに追加してください。
dotnet add package Promete.ImGui- .NET 10
- Promete最新版
- OpenGL Desktop バックエンド、または Vulkan Desktop バックエンド
基本の使い方
Section titled “基本の使い方”ImGuiPluginをアプリケーションに登録し、シーンでインジェクションして利用します。
using Promete;using Promete.GLDesktop;using Promete.ImGui;
var app = PrometeApp.Create() .Use<ImGuiPlugin>() .BuildWithOpenGLDesktop();
app.Run<MainScene>();
class MainScene(ImGuiPlugin imgui) : Scene{ public override void OnStart() { imgui.Render += OnRenderUI; }
private void OnRenderUI() { ImGuiNET.ImGui.ShowDemoWindow(); }}ImGuiPluginのカスタマイズ
Section titled “ImGuiPluginのカスタマイズ”ImGuiPluginを継承し、OnConfigureメソッドをオーバーライドすることでImGuiの初期設定をカスタマイズできます。
ImGuiPlugin のコンストラクタは PrometeApp と InputProvider を受け取るため、継承したクラスでも同じ引数を受け取り、基底クラスへ渡す必要があります。これらはDIによって自動的に注入されます。
初期設定の具体的な説明については、ImGui.NETのドキュメント等を参照してください。本ドキュメントでは割愛します。
using Promete;using Promete.Backends.SilkNetCommon;using Promete.ImGui;using ImGuiNET;
public class MyImGuiPlugin(PrometeApp app, InputProvider provider) : ImGuiPlugin(app, provider){ protected override void OnConfigure(ImGuiIOPtr io) { // ここでフォントや設定をカスタマイズ io.FontGlobalScale = 2.0f; }}アプリケーション登録時に Use<MyImGuiPlugin>() として利用できます。シーンでは MyImGuiPlugin 型として受け取ってください。
var app = PrometeApp.Create() .Use<MyImGuiPlugin>() .BuildWithOpenGLDesktop();ImGuiPlugin.Render
ImGUI描画時に呼ばれるイベントIsSyncronizeWithWindowScaling
ウィンドウのスケーリング値と同期するかどうか
サンプル:ImGUIでUIを表示
Section titled “サンプル:ImGUIでUIを表示”imgui.Render += () =>{ ImGuiNET.ImGui.Begin("ImGui Window"); ImGuiNET.ImGui.Text("Hello, ImGui from Promete!"); if (ImGuiNET.ImGui.Button("Button")) { /* ... */ } ImGuiNET.ImGui.End();};- ImGuiPluginはOpenGL DesktopバックエンドとVulkan Desktopバックエンドで利用可能です
- シーン破棄時は
imgui.Render -= ...でイベント解除を推奨します - ImGuiの初期設定をカスタマイズしたい場合はImGuiPluginを継承し、OnConfigureをオーバーライドしてください