@ -16,6 +16,7 @@
// - Getting Started https://github.com/ocornut/imgui/wiki/Getting-Started
// - Glossary https://github.com/ocornut/imgui/wiki/Glossary
// - Issues & support https://github.com/ocornut/imgui/issues
// - Tests & Automation https://github.com/ocornut/imgui_test_engine
// Getting Started?
// - Read https://github.com/ocornut/imgui/wiki/Getting-Started
@ -25,8 +26,9 @@
// Developed by Omar Cornut and every direct or indirect contributors to the GitHub.
// See LICENSE.txt for copyright and licensing details (standard MIT License).
// This library is free but needs your support to sustain development and maintenance.
// Businesses: you can support continued development via invoiced technical support, maintenance and sponsoring contracts. Please reach out to "contact AT dearimgui.com".
// Individuals: you can support continued development via donations. See docs/README or web page.
// Businesses: you can support continued development via B2B invoiced technical support, maintenance and sponsoring contracts.
// PLEASE reach out at contact AT dearimgui DOT com. See https://github.com/ocornut/imgui/wiki/Sponsors
// Businesses: you can also purchase licenses for the Dear ImGui Automation/Test Engine.
// It is recommended that you don't modify imgui.cpp! It will become difficult for you to update the library.
// Note that 'ImGui::' being a namespace, you can add functions into the namespace from your own source files, without
@ -109,9 +111,10 @@ CODE
- Portable , minimize dependencies , run on target ( consoles , phones , etc . ) .
- Efficient runtime and memory consumption .
Designed for developers and content - creators , not the typical end - user ! Some of the current weaknesses includes :
Designed primarily for developers and content - creators , not the typical end - user !
Some of the current weaknesses ( which we aim to address in the future ) includes :
- Doesn ' t look fancy , doesn ' t animate .
- Doesn ' t look fancy .
- Limited layout features , intricate layouts are typically crafted in code .
@ -190,9 +193,11 @@ CODE
READ FIRST
- - - - - - - - - -
- Remember to check the wonderful Wiki ( https : //github.com/ocornut/imgui/wiki)
- Your code creates the UI , if your code doesn ' t run the UI is gone ! The UI can be highly dynamic , there are no construction or
destruction steps , less superfluous data retention on your side , less state duplication , less state synchronization , fewer bugs .
- Your code creates the UI every frame of your application loop , if your code doesn ' t run the UI is gone !
The UI can be highly dynamic , there are no construction or destruction steps , less superfluous
data retention on your side , less state duplication , less state synchronization , fewer bugs .
- Call and read ImGui : : ShowDemoWindow ( ) for demo code demonstrating most features .
Or browse https : //pthom.github.io/imgui_manual_online/manual/imgui_manual.html for interactive web version.
- The library is designed to be built from sources . Avoid pre - compiled binaries and packaged versions . See imconfig . h to configure your build .
- Dear ImGui is an implementation of the IMGUI paradigm ( immediate - mode graphical user interface , a term coined by Casey Muratori ) .
You can learn about IMGUI principles at http : //www.johno.se/book/imgui.html, http://mollyrocket.com/861 & more links in Wiki.
@ -200,18 +205,38 @@ CODE
For every application frame , your UI code will be called only once . This is in contrast to e . g . Unity ' s implementation of an IMGUI ,
where the UI code is called multiple times ( " multiple passes " ) from a single entry point . There are pros and cons to both approaches .
- Our origin is on the top - left . In axis aligned bounding boxes , Min = top - left , Max = bottom - right .
- This codebase is also optimized to yield decent performances with typical " Debug " builds settings .
- Please make sure you have asserts enabled ( IM_ASSERT redirects to assert ( ) by default , but can be redirected ) .
If you get an assert , read the messages and comments around the assert .
- C + + : this is a very C - ish codebase : we don ' t rely on C + + 11 , we don ' t include any C + + headers , and ImGui : : is a namespace .
- C + + : ImVec2 / ImVec4 do not expose math operators by default , because it is expected that you use your own math types .
See FAQ " How can I use my own math types instead of ImVec2/ImVec4? " for details about setting up imconfig . h for that .
However , imgui_internal . h can optionally export math operators for ImVec2 / ImVec4 , which we use in this codebase .
- C + + : pay attention that ImVector < > manipulates plain - old - data and does not honor construction / destruction ( avoid using it in your code ! ) .
- This codebase aims to be highly optimized :
- A typical idle frame should never call malloc / free .
- We rely on a maximum of constant - time or O ( N ) algorithms . Limiting searches / scans as much as possible .
- We put particular energy in making sure performances are decent with typical " Debug " build settings as well .
Which mean we tend to avoid over - relying on " zero-cost abstraction " as they aren ' t zero - cost at all .
- This codebase aims to be both highly opinionated and highly flexible :
- This code works because of the things it choose to solve or not solve .
- C + + : this is a pragmatic C - ish codebase : we don ' t use fancy C + + features , we don ' t include C + + headers ,
and ImGui : : is a namespace . We rarely use member functions ( and when we did , I am mostly regretting it now ) .
This is to increase compatibility , increase maintainability and facilitate use from other languages .
- C + + : ImVec2 / ImVec4 do not expose math operators by default , because it is expected that you use your own math types .
See FAQ " How can I use my own math types instead of ImVec2/ImVec4? " for details about setting up imconfig . h for that .
We can can optionally export math operators for ImVec2 / ImVec4 using IMGUI_DEFINE_MATH_OPERATORS , which we use internally .
- C + + : pay attention that ImVector < > manipulates plain - old - data and does not honor construction / destruction
( so don ' t use ImVector in your code or at our own risk ! ) .
- Building : We don ' t use nor mandate a build system for the main library .
This is in an effort to ensure that it works in the real world aka with any esoteric build setup .
This is also because providing a build system for the main library would be of little - value .
The build problems are almost never coming from the main library but from specific backends .
HOW TO UPDATE TO A NEWER VERSION OF DEAR IMGUI
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Update submodule or copy / overwrite every file .
- About imconfig . h :
- You may modify your copy of imconfig . h , in this case don ' t overwrite it .
- or you may locally branch to modify imconfig . h and merge / rebase latest .
- or you may ' # define IMGUI_USER_CONFIG " my_config_file.h " ' globally from your build system to
specify a custom path for your imconfig . h file and instead not have to modify the default one .
- Overwrite all the sources files except for imconfig . h ( if you have modified your copy of imconfig . h )
- Or maintain your own branch where you have imconfig . h modified as a top - most commit which you can regularly rebase over " master " .
- You can also use ' # define IMGUI_USER_CONFIG " my_config_file.h " to redirect configuration to your own file .
@ -220,11 +245,12 @@ CODE
from the public API . If you have a problem with a missing function / symbols , search for its name in the code , there will
likely be a comment about it . Please report any issue to the GitHub page !
- To find out usage of old API , you can add ' # define IMGUI_DISABLE_OBSOLETE_FUNCTIONS ' in your configuration file .
- Try to keep your copy of Dear ImGui reasonably up to date .
- Try to keep your copy of Dear ImGui reasonably up to date !
GETTING STARTED WITH INTEGRATING DEAR IMGUI IN YOUR CODE / ENGINE
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- See https : //github.com/ocornut/imgui/wiki/Getting-Started.
- Run and study the examples and demo in imgui_demo . cpp to get acquainted with the library .
- In the majority of cases you should be able to use unmodified backends files available in the backends / folder .
- Add the Dear ImGui source files + selected backend source files to your projects or using your preferred build system .
@ -806,11 +832,12 @@ CODE
Q : Where is the documentation ?
A : This library is poorly documented at the moment and expects the user to be acquainted with C / C + + .
- Run the examples / and explore them .
- Run the examples / applications and explore them .
- Read Getting Started ( https : //github.com/ocornut/imgui/wiki/Getting-Started) guide.
- See demo code in imgui_demo . cpp and particularly the ImGui : : ShowDemoWindow ( ) function .
- The demo covers most features of Dear ImGui , so you can read the code and see its output .
- See documentation and comments at the top of imgui . cpp + effectively imgui . h .
- Dozens of standalone example applications using e . g . OpenGL / DirectX are provided in the
- 20 + standalone example applications using e . g . OpenGL / DirectX are provided in the
examples / folder to explain how to integrate Dear ImGui with your own engine / application .
- The Wiki ( https : //github.com/ocornut/imgui/wiki) has many resources and links.
- The Glossary ( https : //github.com/ocornut/imgui/wiki/Glossary) page also may be useful.
@ -826,14 +853,14 @@ CODE
= = = = = = = = = = = = = = = =
Q : How to get started ?
A : Read ' PROGRAMMER GUIDE ' above . Read examples / README . txt .
A : Read https : //github.com/ocornut/imgui/wiki/Getting-Started. Read 'PROGRAMMER GUIDE' above. Read examples/README.txt.
Q : How can I tell whether to dispatch mouse / keyboard to Dear ImGui or my application ?
A : You should read the ' io . WantCaptureMouse ' , ' io . WantCaptureKeyboard ' and ' io . WantTextInput ' flags !
> > See https : //www.dearimgui.com/faq for a fully detailed answer. You really want to read this.
Q . How can I enable keyboard controls ?
Q : How can I use this without a mouse , without a keyboard or without a screen ? ( gamepad , input share , remote display )
Q . How can I enable keyboard or gamepad controls ?
Q : How can I use this on a machine without mouse , keyboard or screen ? ( input share , remote display )
Q : I integrated Dear ImGui in my engine and little squares are showing instead of text . . .
Q : I integrated Dear ImGui in my engine and some elements are clipping or disappearing when I move windows around . . .
Q : I integrated Dear ImGui in my engine and some elements are displaying outside their expected windows boundaries . . .
@ -848,7 +875,7 @@ CODE
- How can I have multiple widgets with the same label ?
- How can I have multiple windows with the same label ?
Q : How can I display an image ? What is ImTextureID , how does it work ?
Q : How can I use my own math types instead of ImVec2 / ImVec4 ?
Q : How can I use my own math types instead of ImVec2 ?
Q : How can I interact with standard C + + types ( such as std : : string and std : : vector ) ?
Q : How can I display custom shapes ? ( using low - level ImDrawList API )
> > See https : //www.dearimgui.com/faq
@ -878,10 +905,10 @@ CODE
Q : How can I help ?
A : - Businesses : please reach out to " contact AT dearimgui.com " if you work in a place using Dear ImGui !
We can discuss ways for your company to fund development via invoiced technical support , maintenance or sponsoring contacts .
This is among the most useful thing you can do for Dear ImGui . With increased funding , we can hire more people working on this project .
- Individuals : you can support continued development via PayPal donations . See README .
- If you are experienced with Dear ImGui and C + + , look at the GitHub issues , look at the Wiki , read docs / TODO . txt
and see how you want to help and can help !
This is among the most useful thing you can do for Dear ImGui . With increased funding , we sustain and grow work on this project .
Also see https : //github.com/ocornut/imgui/wiki/Sponsors
- Businesses : you can also purchase licenses for the Dear ImGui Automation / Test Engine .
- If you are experienced with Dear ImGui and C + + , look at the GitHub issues , look at the Wiki , and see how you want to help and can help !
- Disclose your usage of Dear ImGui via a dev blog post , a tweet , a screenshot , a mention somewhere etc .
You may post screenshot or links in the gallery threads . Visuals are ideal as they inspire other programmers .
But even without visuals , disclosing your use of dear imgui helps the library grow credibility , and help other teams and programmers with taking decisions .