한국어
오픈소스포럼
 이곳은 다양한 오픈소스 프로젝트를 소개하고 리뷰, 활용 방법을 공유합니다.

Dear ImGui는 게임 엔진 (툴링 용), 실시간 3D 애플리케이션, 전체 화면 애플리케이션, 임베디드 애플리케이션 또는 콘솔 플랫폼의 애플리케이션 개발에 적합하다. 빠르고 렌더러에 구애받지 않고 외부 종속성이 크지 않은 것이 장점이다.

 

Dear ImGui를 사용자 프로젝트에 통합하려면 백엔드가 필요하다. 백엔드는 마우스/키보드/게임패드 입력 및 다양한 설정을 Dear ImGui에게 전달하고 렌더링을 담당한다.

 

공식적으로 지원되는 플랫폼(백엔드 및 바인딩)은 다음과 같다:

  • Renderers: DirectX9, DirectX10, DirectX11, DirectX12, OpenGL (legacy), OpenGL3/ES/ES2 (modern), Vulkan, Metal.
  • Platforms: GLFW, SDL2, Win32, Glut, OSX.
  • Frameworks: Emscripten, Allegro5, Marmalade.

3rdparty 바인딩: https://github.com/ocornut/imgui/wiki/Bindings

 

ImGui는 미리 컴파일된 라이브러리로 제공되지않는다. 소스코드를 프로젝트에 포함하여 직접 빌드해야한다. 이 글은 2020년 11월 27일자 master 브랜치를 클론하고 SDL2 를 백엔드로 데모 응용프로그램을 실행한 것을 기반으로한다.

 

소스코드 저장소: https://github.com/ocornut/imgui

 

imgui1.png

▲일반적인 GUI 를 구축하기에 부족함이 없어 보인다.

 

imgui2.png

 

imgui3.png

▲간단한 그래프를 그릴 수 있는 위젯도 제공된다.

 

컨테이너, 해시 등의 자료 구조, 각종 편의성 클래스등 다른 고급 수준의 기능은 없으므로 표준 라이브러리등과 조합해서 사용해야 한다. 또한 자체 이벤트루프가 없기 때문에 프로그래머가 직접 구현하거나 다른 라이브러리의 도움을 받아야 한다.

 

이것을 이용해 현대적인(유동적인) UI 구현을 기대하긴 어렵고 기본적인 GUI 위젯 스타일을 커스터마이징 하는 것도 쉽지않다. 적어도 필자 입장에선 처음에 언급한 장점 이외에 그 이상은 없는 그야말로 심플한 GUI 라이브러리다. 

 

UI/UX의 요소가 심미적으로 중요한 프로젝트가 아니라면 소스코드를 쉽게 추가하여 부담 없이 사용하기에는 좋다. 참고로 라이센스는 MIT 이다.

 

다음 주소에서 미리 빌드된 데모버전을 제공하므로 다운로드 받아 바로 실행해볼 수 있다.

https://www.dearimgui.org/binaries/

 

필자의 예제 프로젝트 👉 gitlab저장소

번호 제목 글쓴이 날짜 조회 수
36 Wayland IVI Extension 간단 리뷰 file makersweb 2019.05.12 2988
35 GDBus 튜토리얼(GDBus tutorial) file makersweb 2019.06.30 11651
34 텔레그램(Telegram) Bot 개발 file makersweb 2019.07.21 6552
33 리눅스에서 SDL2 최신버전 컴파일과 Qt Creator로 개발환경 구성 file makersweb 2019.10.06 3771
32 webOS소개 및 Raspberry Pi 3 에서 실행 file makersweb 2019.10.13 4633
31 도커(docker)설치 및 기본 명령어 makersweb 2019.12.02 1248
30 Pluma(C++ Plug-in Management Framework) 튜토리얼 file makersweb 2019.12.07 14697
29 [SDL2 와 OpenGL]윈도우 생성과 2D그래픽 file makersweb 2020.04.11 3839
28 ZeroMQ의 기본 메세지 패턴들 file makersweb 2020.07.31 9628
27 ZeroMQ 비동기 클라이언트/서버 패턴 file makersweb 2020.08.13 2630
26 Qt와 GStreamer 로 작성한 flac 오디오 재생 예제 file makersweb 2020.09.05 1864
25 가볍고 쉬운 임베디드용 그래픽 라이브러리 - LVGL file makersweb 2020.09.16 4371
24 윈도우에서 안드로이드 flutter 프로그래밍 개발환경 구축(with Visual Studio Code) file makersweb 2020.09.16 1606
23 GENIVI DLT(Diagnostic Log and Trace) 활용 file makersweb 2020.11.19 10622
» Dear ImGui, 경량의 C++ 용 GUI 및 Widget 라이브러리 file makersweb 2020.11.28 10235
21 라즈베리파이4에서 openFrameworks 예제 실행 file makersweb 2020.12.13 1385
20 Nana, C++용 크로스플랫폼 GUI 라이브러리 file makersweb 2021.01.06 2900
19 라즈베리파이에서 Redis의 Pub/Sub 패턴을 사용하는 Electron 응용프로그램 file makersweb 2021.01.31 1460
18 Protocol Buffers 를 이용한 직렬화 with Conan Package Manager file makersweb 2021.02.24 1589
17 CANdevStudio 를 사용하여 CAN 네트워크 시뮬레이션 file makersweb 2021.03.09 2594