(このライブラリは無料で寛容なライセンスで利用できますが、継続的な改善を維持するには財政的支援が必要です。メンテナンスと安定性に加えて、まだ追加されていない望ましい機能がたくさんあります。あなたの会社が Dear ImGui を使用している場合は、連絡することを検討してください。 。)
ビジネス: 請求書付きのスポンサー/サポート契約を通じて継続的な開発とメンテナンスをサポート:
電子メール: 連絡先 @ dearimgui dot com
個人: 継続的な開発とメンテナンスをここでサポートします。資金調達ページもご覧ください。
ピッチ - 使用法 - 仕組み - リリースと変更ログ - デモ - 入門と統合 |
---|
ギャラリー - サポート、FAQ - サポート方法 -資金とスポンサー- クレジット - ライセンス |
Wiki - 拡張機能 - 言語バインディングとフレームワーク バックエンド - Dear ImGui を使用するソフトウェア - ユーザーの引用 |
Dear ImGui は、肥大化しない C++ 用のグラフィカル ユーザー インターフェイス ライブラリです。 3D パイプライン対応アプリケーションでいつでもレンダリングできる最適化された頂点バッファーを出力します。高速で移植性があり、レンダラーに依存せず、自己完結型 (外部依存関係なし) です。
Dear ImGui は、高速な反復を可能にし、プログラマが(平均的なエンドユーザー向けの UI とは対照的に) コンテンツ作成ツールや視覚化 / デバッグ ツールを作成できるように設計されています。この目標に向けてシンプルさと生産性を重視しており、より高レベルのライブラリに一般的に見られる特定の機能が欠けています。特に、完全な国際化 (右から左へのテキスト、双方向テキスト、テキスト整形など) とアクセシビリティ機能はサポートされていません。
Dear ImGui は、ゲーム エンジン (ツール用)、リアルタイム 3D アプリケーション、フルスクリーン アプリケーション、組み込みアプリケーション、またはオペレーティング システム機能が標準ではないコンソール プラットフォーム上のアプリケーションへの統合に特に適しています。
Dear ImGui のコアは、プラットフォームに依存しないいくつかのファイル内に自己完結型であり、アプリケーション/エンジンで簡単にコンパイルできます。これらはすべて、リポジトリのルート フォルダーにあるファイル (imgui*.cpp、imgui*.h) です。特定のビルド プロセスは必要ありません。 .cpp ファイルを既存のプロジェクトに追加できます。
さまざまなグラフィックス API およびレンダリング プラットフォームのバックエンドがbackends/ フォルダーに提供され、サンプル アプリケーションがexamples/ フォルダーに提供されます。独自のバックエンドを作成することもできます。テクスチャ付きの三角形をレンダリングできる場所ならどこでも、Dear ImGui をレンダリングできます。
詳細については、このドキュメントの「はじめにと統合」セクションを参照してください。
Dear ImGui をアプリケーションでセットアップすると、プログラム ループ内のどこからでも使用できるようになります。
ImGui::Text ( " Hello, world %d " , 123 );
if (ImGui::Button( " Save " ))
MySaveFunction ();
ImGui::InputText ( " string " , buf, IM_ARRAYSIZE(buf));
ImGui::SliderFloat ( " float " , &f, 0 . 0f , 1 . 0f );
// Create a window called "My First Tool", with a menu bar.
ImGui::Begin ( " My First Tool " , &my_tool_active, ImGuiWindowFlags_MenuBar);
if (ImGui::BeginMenuBar())
{
if ( ImGui::BeginMenu ( " File " ))
{
if ( ImGui::MenuItem ( " Open.. " , " Ctrl+O " )) { /* Do stuff */ }
if ( ImGui::MenuItem ( " Save " , " Ctrl+S " )) { /* Do stuff */ }
if ( ImGui::MenuItem ( " Close " , " Ctrl+W " )) { my_tool_active = false ; }
ImGui::EndMenu ();
}
ImGui::EndMenuBar ();
}
// Edit a color stored as 4 floats
ImGui::ColorEdit4 ( " Color " , my_color);
// Generate samples and plot them
float samples[ 100 ];
for ( int n = 0 ; n < 100 ; n++)
samples[n] = sinf(n * 0 . 2f + ImGui::GetTime() * 1 . 5f );
ImGui::PlotLines ( " Samples " , samples, 100 );
// Display contents in a scrolling region
ImGui::TextColored (ImVec4( 1 , 1 , 0 , 1 ), "Important Stuff");
ImGui::BeginChild ( " Scrolling " );
for ( int n = 0 ; n < 50 ; n++)
ImGui::Text ( " %04d: Some text " , n);
ImGui::EndChild ();
ImGui::End ();
ImGui を使用すると、精巧なツールだけでなく、寿命が非常に短いツールも作成できます。短命の極端な例としては、最新のコンパイラの Edit&Continue (ホット コード リロード) 機能を使用すると、アプリケーションの実行中にいくつかのウィジェットを追加して変数を調整し、1 分後にコードを削除できます。 ImGui は値を調整するためだけのものではありません。これを使用すると、テキスト コマンドを発行するだけで、実行中のアルゴリズムをトレースできます。これを独自の反射データと一緒に使用して、データセットをライブで参照できます。これを使用して、エンジン内のサブシステムの内部を公開したり、ロガー、検査ツール、プロファイラー、デバッガー、ゲーム作成エディター/フレームワーク全体などを作成したりできます。
IMGUI パラダイムは、その API を通じて、ユーザーの観点から、不必要な状態の重複、状態の同期、および状態の保持を最小限に抑えようとします。従来の保持モード インターフェイスよりもエラーが発生しにくく (コードもバグも少なく)、動的なユーザー インターフェイスの作成に適しています。詳細については、Wiki の「IMGUI パラダイムについて」セクションを参照してください。
Dear ImGui は、アプリケーションで簡単にレンダリングできる頂点バッファーとコマンド リストを出力します。レンダリングに必要な描画呼び出しと状態変更の数はかなり少ないです。 Dear ImGui はグラフィックスの状態を直接認識したり触れたりしないため、コード内のどこからでも (アルゴリズムの実行中や独自のレンダリング プロセスの途中などで) その関数を呼び出すことができます。 Dear ImGui を既存のコードベースと統合する方法については、examples/ フォルダー内のサンプル アプリケーションを参照してください。
よくある誤解は、イミディエイト モード GUI をイミディエイト モード レンダリングと誤解することです。これは通常、GUI 関数が呼び出される際に、ドライバーや GPU に非効率な描画呼び出しや状態変更を大量に実行することを意味します。これは Dear ImGui が行うことではありません。 Dear ImGui は、頂点バッファーと描画呼び出しバッチの小さなリストを出力します。 GPU が直接触れることはありません。描画呼び出しバッチは適切に最適化されており、後からアプリ内で、またはリモートでレンダリングすることもできます。
装飾された変更ログについては、「リリース」ページを参照してください。変更ログを読むことは、Dear ImGui が提供するものを常に最新の状態に保つのに良い方法であり、これまで無視していたいくつかの機能についてのアイデアが得られるかもしれません。
ImGui::ShowDemoWindow()
関数を呼び出すと、さまざまな機能や例を紹介するデモ ウィンドウが作成されます。コードは、いつでもimgui_demo.cpp
で参照できます。デモの様子は次のとおりです。
ソースからサンプルをビルドできるはずです。そうでない場合は、お知らせください。 Dear ImGui の機能をいくつか簡単に確認したい場合は、デモ アプリの Windows バイナリをここからダウンロードできます。
デモ アプリケーションは DPI に対応していないため、4K 画面では多少の不鮮明さが予想されます。アプリケーションで DPI を認識するには、フォントを異なるスケールでロード/再ロードし、 style.ScaleAllSizes()
を使用してスタイルをスケールできます (FAQ を参照)。
詳細については、『スタートガイド』を参照してください。
ほとんどのプラットフォームおよび C++ を使用する場合、 imgui_impl_xxxx バックエンドの組み合わせを変更せずに使用できるはずです(例: imgui_impl_win32.cpp
+ imgui_impl_dx11.cpp
)。エンジンが複数のプラットフォームをサポートしている場合は、imgui_impl_xxxx ファイルを書き直す代わりに、より多くの imgui_impl_xxxx ファイルを使用することを検討してください。これにより、作業が軽減され、Dear ImGui をすぐに実行できるようになります。必要に応じて、後でカスタム エンジン関数を使用してカスタム バックエンドを書き直すこともできます。
Dear ImGui をカスタム エンジンに統合するには、1) マウス/キーボード/ゲームパッド入力を配線する 2) テクスチャを GPU/レンダリング エンジンにアップロードする 3) テクスチャをバインドし、テクスチャ付きの三角形をレンダリングできるレンダリング関数を提供する、これが本質的に重要です。バックエンドはやってます。 Examples/ フォルダーには、ウィンドウのセットアップとバックエンドの使用を行うアプリケーションが格納されています。入門ガイドに従えば、理論的には Dear ImGui の統合に 1 時間もかからないはずです。時間をかけてよくある質問、コメント、アプリケーション例を読んでください。
正式に保守されているバックエンド/バインディング (リポジトリ内):
サードパーティのバックエンド/バインディングの Wiki ページ:
便利な拡張機能/ウィジェットの wiki ページ:
その他のリンクやアイデアについては、Wiki も参照してください。
Dear ImGui を使用したプロジェクトの例: Tracy (プロファイラー)、ImHex (16 進エディター/データ分析)、RemedyBG (デバッガー)、その他数百。
Dear ImGui を使用したプロジェクトのユーザー投稿スクリーンショットをさらに詳しく知りたい場合は、ギャラリー スレッドをチェックしてください。
サードパーティのウィジェットと拡張機能のリストについては、便利な拡張機能/ウィジェット wiki ページを参照してください。
カスタム エンジン erhe (ドッキング ブランチ) | ワンダーボーイ: ドラゴンの罠 (2017) のカスタム エンジン |
カスタムエンジン (無題) | トレイシー プロファイラー (github) |
参照: よくある質問への回答が記載されている「よくある質問 (FAQ)」。
多くのリンク、参考資料、記事については、「はじめに」および「Wiki」を参照してください。
イミディエイト モード GUI パラダイムについて読む/学ぶには、IMGUI パラダイムに関する記事を参照してください。
「今後の変更点」を参照してください。
参照: Dear ImGui Test Engine + Test Suite for Automation & Testing.
検索エンジンが Wiki をクロールできるようにするために、ここにクロール可能な Wiki へのリンクを示します (人間向けではありません。その理由は次のとおりです)。
はじめる?コンパイル/リンク/実行の問題、またはフォントの読み込みの問題がある初めてのユーザーは、GitHub ディスカッションを使用してください。その他の質問、バグレポート、リクエスト、フィードバックについては、GitHub の問題に投稿してください。新しい問題のテンプレートをよく読んで記入してください。
有料の法人顧客はプライベート サポートをご利用いただけます (電子メール: contact @ dearimgui dot com )。
どのバージョンを入手すればよいですか?
リリースにタグを付けることもあります (わかりやすいリリース ノート付き) が、通常は安全であり、最新のmaster
またはdocking
ブランチに同期することをお勧めします。ライブラリはかなり安定しており、リグレッションが報告されるとすぐに修正される傾向があります。上級ユーザーは、マルチビューポートおよびドッキング機能を備えたdocking
ブランチを使用することをお勧めします。このブランチはマスターと定期的に同期されます。
Dear ImGui を使用しているのは誰ですか?
誰が Dear ImGui を使用しているかについては、Dear ImGui Wiki ページの「見積もり、資金調達とスポンサー、およびソフトウェア」を参照してください。可能であれば、ゲーム/ソフトウェアを追加してください。ギャラリー スレッドもご覧ください。
どうすれば助けられますか?
現在も継続中の Dear ImGui 開発は、ユーザーと民間スポンサーによって財政的に支援されています。
詳細については、現在および過去の Dear ImGui 資金提供サポーターおよびスポンサーの詳細なリストをご覧ください。
2014 年 11 月から 2019 年 12 月まで、進行中の開発は、Patreon 上のユーザーや個人の寄付によって財政的にも支援されてきました。
このプロジェクトを存続させ、繁栄させるために協力してくれた過去および現在のサポーター全員に感謝します。
ImGui 様は、オープンソース プロジェクト用に無料で提供されるソフトウェアとサービスを使用しています。
Omar Cornut および GitHub への直接的または間接的な貢献者全員によって開発されました。このライブラリの初期バージョンは Media Molecule のサポートを受けて開発され、最初はゲーム Tearaway (PS Vita) の内部で使用されました。
定期的な寄稿者には、Rokas Kupstys @ Rokups (2020-2022) が含まれます。自動化システムと回帰テストに関する作業のかなりの部分が、Dear ImGui Test Engine で利用できるようになりました。
メンテナンス/サポート契約、スポンサー請求書、その他の B2B トランザクションは Disco Hello によってホストされ、処理されます。
オマール: 「私が IMGUI パラダイムを初めて発見したのは、Q-Games で、アトマン ビンストックがコードベースに独自の単純な実装を落とし込んだところです。私はそれを改善し、検討するのにかなりの時間を費やしました。アトマンは、作業を通じてこの概念に直接触れたことが判明しました。 Media Molecule に移ったとき、最初に使用したライブラリの欠点と制限を克服するために新しいライブラリを書き直しました。それがこのライブラリになり、それ以来、膨大な量の繰り返しを繰り返してきました。そしてそれを改善することです。」
Tristan Grimmer による ProggyClean.ttf フォントを埋め込みます (MIT ライセンス)。
Sean Barrett による stb_textedit.h、stb_truetype.h、stb_rect_pack.h を埋め込みます (パブリック ドメイン)。
初期バージョンのインスピレーション、フィードバック、テスト: Casey Muratori、Atman Binstock、Mikko Mononen、Emmanuel Briney、Stefan Kamoda、Anton Mikhailov、Matt Willis。また、GitHub にフィードバック、質問、パッチを投稿していただいた皆様にも感謝いたします。
Dear ImGui は MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE.txt を参照してください。