Dear ImGui CMake対応

May 30, 2021

はじめに

Dear ImGuiではvisual studioのサンプルプロジェクトが提供されているが、 visual studioを使いたくないので、CMake対応させてみた。 あとImGuiのソースファイルをコピペして使うのではなくて、サブモジュール化して使いたかった。

Dear ImGuiとは

Youtubeで簡単な紹介動画(https://www.youtube.com/watch?v=LSRJ1jZq90k)がある。

簡単にまとめるとグラフィックスAPIは以下の2種類に分かれる。

  • 保持モード Retained Mode

    • 効率的:イベントが発生したときだけ
    • 静的:はじめに構築される
    • コーディングに時間かかる。設計大事。
    • ユースケース:電卓とか、日常的に使うような普通のアプリ
  • 即時モード Immediate Mode

    • 非効率:ポーリングベース
    • 動的:フレーム毎に構築される
    • コーディングしやすい。プロトタイピング向き。
    • ユースケース:リアルタイムシミュレーション

Microsoftの解説:https://docs.microsoft.com/en-us/windows/win32/learnwin32/retained-mode-versus-immediate-mode

今回は使うImGuiは即時モード、よくあるWPFやMFCとかは保持モード。 保持モードしか使ったことない人は即時モードのコーディングしやすさにびっくりすると思うし、びっくりした。 大学の研究するときにとか、開発の途中経過を確認するのにとても向いているはず。

CMake対応

Githubにアップしている。 https://github.com/yanofu/imgui-glfw-opengl3-cmake

このリポジトリには、example_glfw_opengl3を対象に作成したシンプルなCMakeLists.txtをアップしている。 windows環境なら直ぐ使えるはず。

CMakeLists.txtの内容は以下の通り。

cmake_minimum_required(VERSION 3.0.0)
project(sample VERSION 0.0.0)

find_package(OpenGL)

set(IMGUI_SOURCE_DIR ${CMAKE_SOURCE_DIR}/imgui)
set(IMGUI_BACKENDS_DIR ${IMGUI_SOURCE_DIR}/backends)
set(IMGUI_LIBS_DIR ${IMGUI_SOURCE_DIR}/examples/libs)
set(GL3W_SOURCE_DIR ${IMGUI_LIBS_DIR}/gl3w)
set(GLFW_INCLUDE_DIR ${IMGUI_LIBS_DIR}/glfw/include)
set(GLFW_LIB ${IMGUI_LIBS_DIR}/glfw/lib-vc2010-64/glfw3.lib)

set(SOURCE_FILES
    ${IMGUI_SOURCE_DIR}/examples/example_glfw_opengl3/main.cpp
    ${IMGUI_SOURCE_DIR}/imgui_demo.cpp
    ${IMGUI_SOURCE_DIR}/imgui_draw.cpp
    ${IMGUI_SOURCE_DIR}/imgui_tables.cpp
    ${IMGUI_SOURCE_DIR}/imgui.cpp
    ${IMGUI_SOURCE_DIR}/imgui_widgets.cpp
    ${IMGUI_BACKENDS_DIR}/imgui_impl_opengl3.cpp
    ${IMGUI_BACKENDS_DIR}/imgui_impl_glfw.cpp
    ${GL3W_SOURCE_DIR}/GL/gl3w.c
)

add_executable(sample ${SOURCE_FILES})

target_include_directories(sample PRIVATE
    ${IMGUI_SOURCE_DIR}
    ${IMGUI_BACKENDS_DIR}
    ${GLFW_INCLUDE_DIR}
    ${GL3W_SOURCE_DIR}
)

target_link_libraries(sample
    OpenGL::GL
    ${GLFW_LIB}
)

使うときはサブモジュールごとクローンしてくる。

git clone --recursive https://github.com/yanofu/imgui-glfw-opengl3-cmake.git

vscodeで実行すると以下のように表示される。

sample

windowsで実行する場合、ビルド環境としてvisual studioをインストールしておくこと。 cmake toolsとcmakeの拡張機能を入れると便利。

今後

  • 3D Viewerを追加して、点群とか表示させたい。
  • implotをつかいこなしたい

Profile picture

Written by yanofu

© 2021, yanofu