【C++】Dear ImGui を導入してみた(Visual Studio 2015)
Dear ImGuiとは
Dear ImGuiとはGUIのFrameworkの一種で、DirectXやOpenglをもとに動いています。ImGUI以外にもGUIのフレームワークは色々あるのですが(このサイトやこのサイトにとても詳しくまとまっていました。)その中でも見た目がよさそうだったDear ImGuiを試してみることにしました。
どうやら、Dear ImGui とimguiの2種類があり、それぞれ全く別物の様です。今回導入したのは前者の方です。
これ以降、Dear ImGui を略してImGuiと書いていきます。
(ImGuiのGitHubページ)
github.com
開発環境
・Visual Studio 2015
・ImGuiは2020/02/13の時点で最新のものを使っています。
導入方法
Step 1.
まず、下のGitHubからImGuiのレポジトリをZIPダウンロードして、適当な場所に解凍します。
(ZIPダウンロードは緑のボタンの「Download ZIP」から可能)
github.com
Step 2.
次に、回答したフォルダの中の「imgui-master/examples/example_win32_directx11/example_win32_directx11.vcxproj]をVisual Studioで開きます。そして、ソリューションのビルド→デバッグ(実行)します。(↑のソルーションには5つのプロジェクトが含まれていますが、僕はDirectx11のプロジェクトを使っています。ほかのプロジェクトは「プロジェクトのアンロード」でもしておいてください。)
この時点でビルドが成功しなかった場合は開発環境に問題があると思います。
ビルドが成功すれば、プログラムを実行すると以下の画面が出てくるはずです。
では、次のステップに進みます。
Step 3.
ここからは、プロジェクトを特定のフォルダに移していきます。
とりあえず、上のプロジェクトのフォルダごと好きな場所に移します。
しかし、ただコピー&ペーストしただけだと、プロジェクトのpathが変わっているため、main.cpp以外に必要なファイルを読み込もうとすると#include文でエラーが出ます。
必要なファイルは、以下の通り。
- imconfig.h
- imgui.cpp
- imgui.h
- imgui.ini
- imgui_demo.cpp
- imgui_draw.cpp
- imgui_impl_dx11.cpp
- imgui_impl_dx11.h
- imgui_impl_win32.cpp
- imgui_impl_win32.h
- imgui_internal.h
- imgui_widgets.cpp
これらをmain.cppと同じディレクトリにコピー&ペーストするか、
プロジェクトを選択した状態で、メニューバーの「プロジェクト」→「プロパティ」→「C/C++」→「追加のインクルードディレクトリ」で上に列挙したファイル達のpathを登録する、のどちらか2通りで解決してください。
因みに、僕は以下の様に include するファイルを「imgui」のフォルダに入れて、その中のコードを全て上の画像の方法で追加しました。
<.vs> ├ <Hello_World1> │ └ <v14> │ └ .suo └ <example_win32_directx11> └ <v14> └ .suo <imgui> ├ imconfig.h ├ imgui.cpp ├ imgui.h ├ imgui.ini ├ imgui_demo.cpp ├ imgui_draw.cpp ├ imgui_impl_dx11.cpp ├ imgui_impl_dx11.h ├ imgui_impl_win32.cpp ├ imgui_impl_win32.h ├ imgui_internal.h ├ imgui_widgets.cpp └ imstb_truetype.h Hello_World1.sln build_win32.bat example_win32_directx11.vcxproj example_win32_directx11.vcxproj.filters example_win32_directx11.vcxproj.user imgui.ini main.cpp
Step 4.
新しくincludeファイルを登録するのと同時に、プロジェクトフォルダ移動前の依存ファイルをプロジェクトから除いておく必要があります。
そのためには、「ソリューションエクスプローラー(デフォルトだとVisual Studioの画面右側にある)」にある「imgui」の中と「sources」のmain.cpp以外のファイルを選択して「プロジェクトから除外」を選択します。
完了
Step2~4を行うと、プロジェクトフォルダを移動してもエラーが出ずにビルドできるはず...