(이 라이브러리는 무료 및 허용 라이센스로 사용할 수 있지만 지속적인 개선을 유지하려면 재정 지원이 필요합니다. 유지 관리 및 안정성 외에도 아직 추가되지 않은 유용한 기능이 많이 있습니다. 회사에서 Dear ImGui를 사용하는 경우 문의해 주시기 바랍니다. .)
기업: 청구서가 발행된 후원/지원 계약을 통해 지속적인 개발 및 유지 관리를 지원합니다.
이메일 : @dearimgui.com으로 연락주세요
개인: 여기에서 지속적인 개발 및 유지 관리를 지원합니다. 자금 페이지도 참조하세요.
홍보 - 사용법 - 작동 방식 - 릴리스 및 변경 로그 - 데모 - 시작하기 및 통합 |
---|
갤러리 - 지원, FAQ - 도움 방법 - 자금 지원 및 후원자 - 크레딧 - 라이센스 |
Wiki - 확장 - 언어 바인딩 및 프레임워크 백엔드 - Dear ImGui를 사용하는 소프트웨어 - 사용자 인용문 |
Dear ImGui는 C++용 그래픽 사용자 인터페이스 라이브러리 입니다. 3D 파이프라인 지원 애플리케이션에서 언제든지 렌더링할 수 있는 최적화된 정점 버퍼를 출력합니다. 빠르고 이식 가능하며 렌더러에 구애받지 않고 독립적입니다(외부 종속성 없음).
Dear ImGui는 빠른 반복을 가능하게 하고 프로그래머가 콘텐츠 생성 도구 및 시각화/디버그 도구 (일반 최종 사용자를 위한 UI와 반대)를 만들 수 있도록 설계되었습니다. 이 목표를 향한 단순성과 생산성을 선호하며 더 높은 수준의 라이브러리에서 일반적으로 발견되는 특정 기능이 부족합니다. 무엇보다도 완전한 국제화(오른쪽에서 왼쪽으로 텍스트, 양방향 텍스트, 텍스트 모양 등) 및 접근성 기능은 지원되지 않습니다.
Dear ImGui는 특히 게임 엔진(툴링용), 실시간 3D 애플리케이션, 전체 화면 애플리케이션, 임베디드 애플리케이션 또는 운영 체제 기능이 비표준인 콘솔 플랫폼의 모든 애플리케이션에 통합하는 데 적합합니다.
Dear ImGui의 핵심은 애플리케이션/엔진에서 쉽게 컴파일할 수 있는 몇 가지 플랫폼 독립적인 파일 내에 자체 포함되어 있습니다 . 저장소의 루트 폴더(imgui*.cpp, imgui*.h)에 있는 모든 파일입니다. 특정 빌드 프로세스가 필요하지 않습니다 . .cpp 파일을 기존 프로젝트에 추가할 수 있습니다.
다양한 그래픽 API 및 렌더링 플랫폼을 위한 백엔드는 example/ 폴더의 예제 애플리케이션과 함께 backends/ 폴더에 제공됩니다. 자신만의 백엔드를 만들 수도 있습니다. 질감이 있는 삼각형을 렌더링할 수 있는 곳이라면 어디에서나 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 ();
Dear ImGui를 사용하면 매우 짧은 도구뿐만 아니라 정교한 도구도 만들 수 있습니다. 수명이 짧다는 것의 극단적인 측면: 최신 컴파일러의 편집 및 계속(핫 코드 다시 로드) 기능을 사용하면 몇 가지 위젯을 추가하여 애플리케이션이 실행되는 동안 변수를 조정할 수 있으며, 1분 후에 코드를 제거할 수 있습니다! Dear ImGui는 단지 값을 조정하기 위한 것이 아닙니다. 텍스트 명령을 내보내는 것만으로 실행 중인 알고리즘을 추적하는 데 사용할 수 있습니다. 이를 자체 리플렉션 데이터와 함께 사용하여 데이터 세트를 실시간으로 탐색할 수 있습니다. 이를 사용하여 엔진의 하위 시스템 내부를 노출하고 로거, 검사 도구, 프로파일러, 디버거, 전체 게임 제작 편집기/프레임워크 등을 생성할 수 있습니다.
IMGUI 패러다임은 API를 통해 사용자 관점에서 불필요한 상태 복제, 상태 동기화 및 상태 유지를 최소화하려고 시도합니다. 기존의 유지 모드 인터페이스보다 오류가 덜 발생하며(코드 및 버그가 적음) 동적 사용자 인터페이스를 만드는 데 적합합니다. 자세한 내용은 Wiki의 IMGUI 패러다임 정보 섹션을 확인하세요.
Dear ImGui는 애플리케이션에서 쉽게 렌더링할 수 있는 정점 버퍼와 명령 목록을 출력합니다. 이를 렌더링하는 데 필요한 그리기 호출 및 상태 변경 횟수는 상당히 적습니다. Dear ImGui는 그래픽 상태를 직접 알거나 접촉하지 않기 때문에 코드의 어느 곳에서나(예: 실행 중인 알고리즘 도중 또는 자체 렌더링 프로세스 도중) 해당 기능을 호출할 수 있습니다. Dear ImGui를 기존 코드베이스와 통합하는 방법에 대한 지침은 example/ 폴더의 샘플 애플리케이션을 참조하세요.
일반적인 오해는 즉시 모드 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 파일을 사용하는 것을 고려해보세요. 이렇게 하면 작업량이 줄어들고 Dear ImGui를 즉시 실행할 수 있습니다. 원하는 경우 나중에 사용자 정의 엔진 기능을 사용하여 사용자 정의 백엔드를 다시 작성하기로 결정할 수 있습니다.
Dear ImGui를 사용자 정의 엔진에 통합하는 것은 1) 마우스/키보드/게임패드 입력 연결 2) GPU/렌더링 엔진에 텍스처 업로드 3) 텍스처를 바인딩하고 텍스처 삼각형을 렌더링할 수 있는 렌더링 기능 제공의 문제입니다. 백엔드가 수행 중입니다. 예제/ 폴더는 창 설정 및 백엔드 사용과 같은 작업을 수행하는 애플리케이션으로 채워집니다. 시작하기 가이드를 따르면 이론적으로 Dear ImGui를 통합하는 데 1시간도 채 걸리지 않습니다. FAQ, 댓글, 예제 애플리케이션을 꼭 읽어보세요!
공식적으로 유지되는 백엔드/바인딩(저장소 내):
타사 백엔드/바인딩 위키 페이지:
유용한 확장/위젯 위키 페이지:
더 많은 링크와 아이디어를 보려면 Wiki를 참조하세요.
Dear ImGui를 사용하는 예제 프로젝트: Tracy(프로파일러), ImHex(16진수 편집기/데이터 분석), RemedyBG(디버거) 외 수백 가지.
Dear ImGui를 사용하여 사용자가 제출한 더 많은 프로젝트 스크린샷을 보려면 갤러리 스레드를 확인하세요!
타사 위젯 및 확장 목록을 보려면 유용한 확장/위젯 위키 페이지를 확인하세요.
커스텀 엔진 erhe(도킹 브랜치) | Wonder Boy: The Dragon's Trap(2017)용 커스텀 엔진 |
커스텀 엔진(제목 없음) | 트레이시 프로파일러(github) |
참조: 자주 묻는 질문(FAQ)에서 일반적인 질문에 대한 답변을 확인하세요.
다양한 링크, 참고 자료, 기사는 시작하기 및 Wiki를 참조하세요.
참조: 즉시 모드 GUI 패러다임에 대해 읽고 배우려면 IMGUI 패러다임에 대한 기사를 참조하세요.
참조: 다가오는 변경 사항.
참조: ImGui 테스트 엔진 + 자동화 및 테스트용 테스트 스위트.
검색 엔진이 위키를 크롤링하도록 하기 위해 여기에 크롤링 가능한 위키에 대한 링크가 있습니다(사람용이 아닌 이유는 다음과 같습니다).
시작하시겠어요? 컴파일/링크/실행에 문제가 있거나 글꼴을 로드하는 데 문제가 있는 처음 사용자의 경우 GitHub 토론을 사용하세요. 기타 질문, 버그 보고서, 요청, 피드백이 있는 경우 GitHub 문제에 게시하세요. 새 이슈 템플릿을 주의 깊게 읽고 작성해 주세요.
유료 기업 고객을 위한 개별 지원이 가능합니다. (이메일: [email protected] )
어떤 버전을 받아야 하나요?
때때로 릴리스에 태그를 지정하지만(좋은 릴리스 노트와 함께) 일반적으로 안전하며 최신 master
또는 docking
브랜치와 동기화하는 것이 좋습니다. 라이브러리는 상당히 안정적이며 보고 시 회귀가 빠르게 수정되는 경향이 있습니다. 고급 사용자는 다중 뷰포트 및 도킹 기능과 함께 docking
분기를 사용할 수 있습니다. 이 브랜치는 정기적으로 마스터와 동기화됩니다.
Dear ImGui를 사용하는 사람은 누구인가요?
누가 Dear ImGui를 사용하고 있는지 알아보려면 Dear ImGui Wiki 페이지를 사용하는 견적, 자금 지원 및 후원자 및 소프트웨어를 참조하세요. 가능하다면 게임/소프트웨어를 추가하세요! 또한 갤러리 스레드도 참조하세요!
어떻게 도와드릴까요?
진행 중인 Dear ImGui 개발은 사용자와 개인 후원자의 재정적 지원을 받아왔습니다.
자세한 내용은 현재 및 과거 친애하는 ImGui 자금 후원자 및 후원자의 세부 목록을 참조하세요.
2014년 11월부터 2019년 12월까지 Patreon 사용자와 개인 기부를 통해 지속적인 개발이 재정적으로 지원되었습니다.
이 프로젝트가 계속해서 번창할 수 있도록 도와주신 과거와 현재의 모든 지지자들에게 감사드립니다!
Dear ImGui는 오픈소스 프로젝트를 위해 무료로 제공되는 소프트웨어와 서비스를 사용하고 있습니다.
Omar Cornut과 GitHub의 모든 직간접 기여자가 개발했습니다. 이 라이브러리의 초기 버전은 Media Molecule의 지원을 받아 개발되었으며 Tearaway(PS Vita) 게임에서 내부적으로 처음 사용되었습니다.
반복 기여자에는 Rokas Kupstys @rokups(2020-2022)가 포함됩니다. 자동화 시스템 작업의 상당 부분과 회귀 테스트를 이제 Dear ImGui 테스트 엔진에서 사용할 수 있습니다.
유지 관리/지원 계약, 후원 청구서 및 기타 B2B 거래는 Disco Hello에서 호스팅하고 처리합니다.
Omar: "저는 Atman Binstock이 코드베이스에 자신의 간단한 구현을 삭제한 Q-Games에서 IMGUI 패러다임을 처음 발견했습니다. 저는 이를 개선하고 생각하는 데 꽤 많은 시간을 보냈습니다. Atman은 작업을 통해 이 개념에 직접적으로 노출되었다는 것이 밝혀졌습니다. Casey와 함께 Media Molecule으로 옮겼을 때 처음 작업한 라이브러리의 결함과 한계를 극복하려고 새 라이브러리를 다시 작성했는데 그 이후로 무리한 시간을 보냈습니다. 이를 반복하고 개선하고 있습니다."
Tristan Grimmer(MIT 라이센스)의 ProggyClean.ttf 글꼴을 포함합니다.
Sean Barrett(공개 도메인)의 stb_textedit.h, stb_truetype.h, stb_ect_pack.h를 포함합니다.
초기 버전에 대한 영감, 피드백 및 테스트: Casey Muratori, Atman Binstock, Mikko Mononen, Emmanuel Briney, Stefan Kamoda, Anton Mikhailov, Matt Willis. 또한 GitHub에 피드백, 질문, 패치를 게시해 주신 모든 분들께 감사드립니다.
친애하는 ImGui는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 LICENSE.txt를 참조하세요.