ImGUI 様
ImGui は、さまざまな対話型ツールやエディターの作成に使用できる軽量の C++ グラフィカル インターフェイス ライブラリです。クロスプラットフォームかつ高いパフォーマンスが特徴です。
ImGUI は単独でウィンドウを作成できません。ウィンドウの作成には Win32API、glfw、SDL などのツールを使用する必要があります。また、グラフィックのレンダリングには OpenGL や DirectX、vulkan などを使用する必要があります。SDL、OpenGL などはバックエンドと呼ばれます。 (バックエンド)
- SDL は、ウィンドウ オブジェクトの作成、ユーザー入力の処理などを担当します。
- OpenGL は、グラフィックスの描画、シェーダーの設定、ユニフォーム変数の更新などを担当します。
- imgui は、テキスト、ボタン、カラー ピッカーなどの GUI 要素の作成とレンダリングを担当します。
ImGui の使用は非常に簡単です。ImGui のソース コード ファイルを自分のプロジェクトに追加し、適切なバックエンド (glfw や SDL、OpenGL や DirectX など) を選択するだけで、さまざまなコントロールの描画を開始できます。そして窓。
ダウンロード
GitHub に移動して https://github.com/ocornut/imgui をダウンロードします
ダウンロードが完了すると、次のような ImGui のディレクトリ構造が表示されます。
イムグイ/
-
backends/ バックエンド フォルダーには、さまざまなプラットフォームとレンダラーの実装コードが含まれています
-
Examples/ example フォルダーには、ImGui を使用したさまざまなサンプル プログラムが含まれています
-
misc/その他のフォルダー (いくつかの補助ツールと拡張モジュールを含む)
-
imconfig.h 構成ファイル。ImGui の一部のデフォルト設定を変更するために使用できます。
-
imgui.cpp/imgui.h ImGui のコア ソース コード ファイル。プロジェクトに追加する必要があります。
-
imgui_demo.cpp/imgui_demo.h ImGui デモ ソース コード ファイル (さまざまなコントロールやウィンドウのサンプル コードを含む)
-
imgui_draw.cpp/imgui_draw.h ImGui の描画ソース コード ファイル。さまざまなグラフィック要素のレンダリングを担当します。
-
imgui_internal.h ImGui の内部ヘッダー ファイル。いくつかの高度な機能と実装の詳細が含まれています。
-
imgui_tables.cpp/imgui_tables.h テーブルの作成と管理の機能を提供する ImGui のテーブル ソース コード ファイル
-
imgui_widgets.cpp/imgui_widgets.h 各種コントロールの作成・管理機能を提供する ImGui のコントロールソースコードファイル
-
imstb_rectpack.h/imstb_textedit.h/imstb_truetype.h 長方形パッキング、テキスト編集、フォント レンダリング用のサードパーティ ライブラリ ファイル
使用
独自のプロジェクトで ImGUI を使用するには、次のものが必要です。
- ルート ディレクトリ
.cpp
内のすべてのファイルを.h
自分のプロジェクトにコピーします glfw
適切なバックエンドの組み合わせを選択します。opengl
次に、glfwとopenglをバックエンドとしてImGUIのサンプルプロジェクトを作成します(cmake+MinGWでコンパイル)
私が構築したプロジェクトを使用できます: https://gitcode.net/m0_46079750/imguitemplate
まずプロジェクトのディレクトリ構造を作成します。
├─lib
│ ├─glfw # glfw可以自己去官网下载、编译
│ └─imgui
│ └─backend
└─src
- lib は必要なライブラリ ファイルを示します。2 つのライブラリが必要です。1 つは glfw、もう 1 つは imgui
- src は独自のソース コード ファイルです
glfw は公式 Web サイトにアクセスして自分でダウンロードしてコンパイルすることも、私のプロジェクトに直接コピーすることもできます
lib に imgui フォルダーを作成し、いくつかの h および cpp ファイルを imgui のルート ディレクトリにコピーします。
lib/imgui ディレクトリは次のとおりです。
次に、次のように、imgui プロジェクトのバックエンドで使用されるいくつかのファイルをlib/imgui/backend
自分のプロジェクトのフォルダーにコピーします。
最後に、imgui プロジェクト内のサンプルをコピーして、src フォルダーに入れて使用します (ここでは glfw+opengl の組み合わせを使用しているので、次の例を使用します)
この例の main.cpp ファイルを src フォルダーにコピーするだけで、最終的なプロジェクト構造は次のようになります。
ImGUITemplate
├─lib
│ ├─glfw
│ └─imgui
│ │ imconfig.h
│ │ imgui.cpp
│ │ imgui.h
│ │ imgui_demo.cpp
│ │ imgui_draw.cpp
│ │ imgui_internal.h
│ │ imgui_tables.cpp
│ │ imgui_widgets.cpp
│ │ imstb_rectpack.h
│ │ imstb_textedit.h
│ │ imstb_truetype.h
│ │ LICENSE.txt
│ │
│ └─backend
│ imgui_impl_glfw.cpp
│ imgui_impl_glfw.h
│ imgui_impl_opengl3.cpp
│ imgui_impl_opengl3.h
│ imgui_impl_opengl3_loader.h
│
└─src
main.cpp
次に、cmakelists.txt を書き込みます。
cmake_minimum_required(VERSION 3.10)
project(imguiTmpl)
set(CMAKE_CXX_STANDARD 11)
include_directories(lib/glfw/include
lib/imgui
lib/imgui/backend
)
link_directories(
lib/glfw/lib
)
file(GLOB_RECURSE IMGUI_SRCS lib/imgui/*.cpp)
add_executable(imguiTmpl WIN32 src/main.cpp ${IMGUI_SRCS}) #添加WIN32参数就不会显示控制台界面了
target_link_libraries(imguiTmpl glfw3.a opengl32) # 链接库文件
最後に、cmakeを使用してプロジェクトをビルドします
実行例は次のとおりです。