(該庫可在免費且寬鬆的許可證下使用,但需要財務支援來維持其持續改進。除了維護和穩定性之外,還有許多理想的功能有待添加。如果您的公司正在使用Dear ImGui,請考慮聯繫.)
企業:透過發票贊助/支援合約支援持續開發和維護:
電子郵件:聯絡@ Dearimgui dot com
個人:支持這裡的持續開發和維護。另請參閱資金頁面。
推廣 - 使用 - 工作原理 - 發布和變更日誌 - 演示 - 入門和集成 |
---|
圖庫 - 支援、常見問題 - 如何提供幫助 -資金和贊助商- 鳴謝 - 許可證 |
Wiki - 擴充 - 語言綁定和框架後端 - 使用 Dear ImGui 的軟體 - 使用者引用 |
Dear ImGui 是一個用於 C++ 的無膨脹圖形使用者介面函式庫。它輸出最佳化的頂點緩衝區,您可以隨時在支援 3D 管道的應用程式中進行渲染。它快速、可移植、與渲染器無關且獨立(無外部依賴項)。
Dear ImGui 旨在實現快速迭代,並使程式設計師能夠創建內容創建工具和視覺化/調試工具(而不是普通最終用戶的 UI)。它有利於實現這一目標的簡單性和生產力,並且缺乏更高級庫中常見的某些功能。除此之外,不支援完全國際化(從右到左文字、雙向文字、文字整形等)和輔助功能。
Dear ImGui 特別適合整合到遊戲引擎(用於工具)、即時 3D 應用程式、全螢幕應用程式、嵌入式應用程式或作業系統功能非標準的控制台平台上的任何應用程式。
Dear ImGui 的核心獨立於一些與平台無關的檔案中,您可以輕鬆地在應用程式/引擎中編譯這些檔案。它們是儲存庫根資料夾中的所有檔案(imgui*.cpp、imgui*.h)。不需要特定的建置過程。您可以將 .cpp 檔案新增至現有項目。
backends/ 資料夾中提供了各種圖形 API 和渲染平台的後端,以及 Examples/ 資料夾中的範例應用程式。您也可以創建自己的後端。任何可以渲染紋理三角形的地方,都可以渲染 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 可讓您創建複雜的工具以及非常短暫的工具。在短暫性的極端方面:使用現代編譯器的編輯和繼續(熱程式碼重新載入)功能,您可以添加一些小部件來在應用程式運行時調整變量,並在一分鐘後刪除程式碼! Dear ImGui 不僅僅用於調整值。您只需發出文字命令即可使用它來追蹤正在運行的演算法。您可以將其與您自己的反射資料一起使用來即時瀏覽資料集。您可以使用它來公開引擎中子系統的內部結構,建立記錄器、檢查工具、分析器、偵錯器、整個遊戲製作編輯器/框架等。
從使用者的角度來看,IMGUI 範例透過其 API 嘗試最大限度地減少多餘的狀態重複、狀態同步和狀態保留。與傳統的保留模式介面相比,它更不容易出錯(更少的程式碼和錯誤),並且適合創建動態使用者介面。請參閱 Wiki 的關於 IMGUI 範例部分以了解更多詳細資訊。
Dear ImGui 輸出頂點緩衝區和命令列表,您可以輕鬆在應用程式中渲染它們。渲染它們所需的繪製呼叫和狀態變更的數量相當小。因為 Dear ImGui 不直接知道或接觸圖形狀態,所以您可以在程式碼中的任何位置呼叫它的函數(例如,在運行演算法的中間,或在您自己的渲染過程的中間)。請參閱範例/資料夾中的範例應用程序,以了解如何將 Dear ImGui 與現有程式碼庫整合的說明。
一個常見的誤解是將立即模式 GUI 誤認為是立即模式渲染,這通常意味著在呼叫 GUI 函數時使用一堆低效的繪製呼叫和狀態變更來打擊您的驅動程式/GPU。這不是 Dear ImGui 所做的。 Dear ImGui 輸出頂點緩衝區和一小部分繪製呼叫批次。它永遠不會直接接觸您的 GPU。繪製呼叫批次是相當理想的,您可以稍後在您的應用程式中甚至遠端渲染它們。
有關修飾的變更日誌,請參閱發布頁面。閱讀變更日誌是了解 Dear ImGui 所提供的最新內容的好方法,也許會給您一些到目前為止一直忽略的功能的想法!
呼叫ImGui::ShowDemoWindow()
函數將建立一個演示窗口,展示各種功能和範例。程式碼始終可在imgui_demo.cpp
中供參考。這是演示的樣子。
您應該能夠從原始程式碼建立範例。如果您不這樣做,請告訴我們!如果您想快速了解 Dear ImGui 的一些功能,您可以在此處下載演示應用程式的 Windows 二進位檔案:
演示應用程式不支援 DPI,因此預計 4K 螢幕上會出現一些模糊情況。對於應用程式中的 DPI 感知,您可以以不同的比例載入/重新載入字體,並使用style.ScaleAllSizes()
縮放樣式(請參閱常見問題)。
有關詳細信息,請參閱入門指南。
在大多數平台上以及使用 C++ 時,您應該能夠使用 imgui_impl_xxxx 後端的組合而無需修改(例如imgui_impl_win32.cpp
+ imgui_impl_dx11.cpp
)。如果您的引擎支援多個平台,請考慮使用更多的 imgui_impl_xxxx 檔案而不是重寫它們:這對您來說會減少工作量,並且您可以立即執行 Dear ImGui。如果您願意,您稍後可以決定使用自訂引擎功能重寫自訂後端。
將Dear ImGui 整合到您的自訂引擎中需要執行以下操作:1) 連接滑鼠/鍵盤/遊戲手把輸入2) 將紋理上傳到GPU/渲染引擎3) 提供可以綁定紋理並渲染紋理三角形的渲染函數,這本質上就是後端正在做。 example/ 資料夾中填入了執行此操作的應用程式:設定視窗並使用後端。如果您遵循入門指南,理論上您應該花費不到一小時的時間來整合 Dear ImGui。請務必花時間閱讀常見問題、評論和範例應用程式!
官方維護的後端/綁定(在儲存庫中):
第三方後端/綁定 wiki 頁面:
有用的擴充功能/小工具 wiki 頁面:
另請參閱 Wiki 以獲取更多連結和想法。
使用 Dear ImGui 的範例專案:Tracy(分析器)、ImHex(十六進位編輯器/資料分析)、RemedyBG(偵錯器)和數百個其他專案。
如需更多用戶提交的使用 Dear ImGui 的專案螢幕截圖,請查看 Gallery Threads!
有關第三方小部件和擴充功能的列表,請查看有用的擴充功能/小部件 wiki 頁面。
客製化引擎二合(對接分支) | 神奇男孩:龍之陷阱 (2017) 的客製化引擎 |
客製化引擎(未命名) | 特雷西分析器 (github) |
請參閱:常見問題 (FAQ),其中解答了常見問題。
請參閱:入門和 Wiki,以獲取許多連結、參考資料和文章。
請參閱:有關 IMGUI 範例的文章,以閱讀/了解立即模式 GUI 範例。
請參閱:即將發生的變更。
請參閱:親愛的 ImGui 測試引擎 + 用於自動化和測試的測試套件。
為了讓搜尋引擎抓取維基,這裡有一個可抓取維基的連結(不適合人類,原因如下)。
入門?對於遇到編譯/連結/運行問題或載入字體問題的首次用戶,請使用 GitHub 討論。對於任何其他問題、錯誤報告、請求、回饋,請在 GitHub 問題上發布。請仔細閱讀並填寫新股模板。
付費企業客戶可以享受私人支援(電子郵件: contact@dearimgui dot com )。
我應該取得哪個版本?
我們偶爾會標記版本(帶有良好的版本註釋),但通常是安全的,建議同步到最新的master
或docking
分支。該庫相當穩定,並且在報告後回歸往往會快速修復。進階使用者可能希望使用具有多視窗和對接功能的docking
分支。此分支定期與主分支保持同步。
誰使用 Dear ImGui?
請參閱使用 Dear ImGui Wiki 頁面的報價、資金和贊助商以及軟體,以了解誰在使用 Dear ImGui。如果可以的話,請添加您的遊戲/軟體!另外,請參考圖庫主題!
我能提供什麼幫助嗎?
Dear ImGui 的持續開發得到了用戶和私人贊助商的經濟支持。
詳情請參閱目前和過去的 Dear 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:「我第一次發現IMGUI 範式是在Q-Games,Atman Binstock 在程式碼庫中放棄了他自己的簡單實現,我花了相當多的時間對其進行改進和思考。事實證明,Atman 透過工作直接接觸到了這個概念。大量的時間來迭代和改進它。
嵌入 Tristan Grimmer 的 ProggyClean.ttf 字體(MIT 授權)。
嵌入 Sean Barrett 的 stb_textedit.h、stb_truetype.h、stb_rect_pack.h(公共領域)。
早期版本的靈感、回饋與測試:Casey Muratori、Atman Binstock、Mikko Mononen、Emmanuel Briney、Stefan Kamoda、Anton Mikhailov、Matt Willis。也要感謝大家在 GitHub 上發布回饋、問題和補丁。
Dear ImGui 根據 MIT 許可證獲得許可,請參閱 LICENSE.txt 以了解更多資訊。