Open ocornut opened 4 years ago
We're using ImGui in Particubes, though it may not be easy to recognize it. 🙂
It will be available on iOS, Android, macOS & Windows devices. The project is not open source, but we will open source parts of it. Including the layer we added on top of Dear ImGui to implement that kind of GUI.
In Particubes, you can script games, and that includes GUI of course. We worked on an auto layout system users will be able to use in Lua to display their own buttons, labels, etc. For games to look good on all screen factors and be enjoyable with mouse & keyboard or touch events.
I work at Spotify, and on my hackdays I've been making a Spotify client using Dear Imgui. I'm using the docking branch, and the new table API. It uses the same C++ library as our mobile and desktop clients use, and the UI is roughly 6000 lines of code.
Update: worked a bit on better styling:
@parbo That is amazing! Am I safe to assume there is only a very slim chance of this being released? Not quite familiar with Spotify licensing or if they would prohibit the release of something like this (while directly using the Spotify C++ lib)
Converted my previous project from NanoGUI to Dear-ImGui, didn't know about dear imgui back then :) The project is basically an educational raytracer/pathtracer on the gpu. For more information you can check the project's github . Nothing fancy here, just a few basic widgets.
Due to the nature of data i deal with, i was kinda in need of a callback-based plotting widget that also handles doubles.
I let myself be inspired by both PlotLines() and https://github.com/soulthreads/imgui-plot - and endet up with something that, for now, looks like this:
My current todo for this is
I work on this over here: https://github.com/mkalte666/imguiplot
Due to the nature of data i deal with, i was kinda in need of a callback-based plotting widget that also handles doubles.
Nice work! Maybe plotting widgets lately, also see #3067 by @epezent. Copying their picture/gif here as they haven't been posted here:
Zooming/Panning
Misc. Controls
Set Labels and Show/Hide Elements
Real Time Plotting
Adapts to Current Theme
Thousands of Points!
In Practice
NVIDIA Texture Tools Exporter uses Dear ImGui: https://developer.nvidia.com/nvidia-texture-tools-exporter
We're slowly entering an era where it'll become harder to spot Dear ImGui in some applications when they are using custom widgets (in the case of this, it's clearer when using the app, and the licence information explicitly mention dear imgui)
Not my screenshot, but I just noticed that Heatblur Simulations is using Dear ImGui as debugging UI in the F-14 module for DCS World :)
Link to video: https://www.youtube.com/watch?v=dpPXxz70odo
Edit: and a different screenshot with Dear ImGui found here: https://forums.eagle.ru/showthread.php?t=268159
Little script in https://github.com/sonoro1234/anima for making 3D models from photos.
ImGuiFontStudio :
Repo and twit/video
A cross platform tool for subset a font or generate a source file (based on IconFontCppHeaders) With him you can also merge many font in one (wip)
The goal is to simplify the process for have icons font file for use with Dear ImGui in embedded mode or not.
Some pictures :
Model Viewer/Hardpointer for Librelancer, 2 years later from thread 6.
This Final Fantasy VII Remake demo shows dear imgui briefly as part of an audio thing: https://www.youtube.com/watch?time_continue=675&v=DliMpiemUy8&feature=emb_title
Main menu bar appears to be same font so probably dear imgui, shows a bunch of menu items: Renderer, DataBase, DataTable, Field, Party, Battle, Cinema, Effect, ???, Sound, Scene, Tale, NavMesh, Animation, Physics, Command, System, MiniGame, Example, QA.
From upcoming game "Teardown" via one of their twitch
http://teardowngame.com/
From #3114, Tracy Profiler adding markers/decorations over scrollbars is a nice idea I haven't really seen done in a dear imgui app before:
Misc shots of Tracy Profiler:
RemedyBG (C++ Debugger for Windows) also uses dear imgui (https://remedybg.handmade.network/)
Desktop+, a desktop mirroring overlay application for SteamVR, is using Dear ImGui for its user interface.
This involved adapting ImGui to take inputs from the OpenVR API, which turned out to be fairly simple. Thank you for this wonderful library!
In terms of ImGui showcase the UI isn't anything fancy, but gets the job done. It being in VR has some novelty at least, I hope.
Edit: Version 2.1 is out and looks a bit better than this. I don't want to spam another post, so for the off-chance it this is considered interesting enough for a release post or just as a fellow up, the current screenshot is here
VX2 by Spectrals (won 1st place PC Demo at Revision 2020) http://www.pouet.net/prod.php?which=85304
https://twitter.com/Speedoog/status/1249776515316944897 "Here's some screenshots of our edition tool with lots of dear imgui windows :) You can see the sequencer, keyframable property editor, curves, math expressions, effect tester, debug etc ... Sequencer is based on a fork of ImSequencer by @skaven_ Thanks to you too "
Thank you for this library. I'm working on a platform independent x86 Windows emulator and previously I was using wxWidgets, but I had problems with it looking good across platforms.
Might not be super easy to spot, but I’m using Dear ImGui for my VR app BIMXplorer. It works great, I simply love it!!
https://www.youtube.com/watch?v=mIK-aeI1VLQ
https://www.youtube.com/watch?v=54TJJp57rlM
A new version of tooll.io written in ImGui / ImGui.net.
Thanks a lot! ImGui is phenomenal and so much fun to work with.
This is a chiptune player I do for the nintendo switch using ImGui branches table. I love ImGui. (https://github.com/notnotme/osp)
Improved my online map viewer
Can be seen live here https://www.youtube.com/watch?v=scVTdj2vop0
I made a UI library on top of ImGui in Python, geared towards scientific visualization & image processing. I have been using it at our company for quick, even throw-away GUIs, but also for more complex applications lately.
Repo: https://github.com/potocpav/python-concur Homepage with code samples: https://potocpav.github.io/python-concur-docs/homepage.html
The library uses Python generators for principled event & state handling, and includes some extra widgets (pan & zoom image with overlay) and extra drawing functions (scatter plot, ...). Other than that, it is a thin wrapper on top of ImGui. Here are some examples of the tools I made.
Annotation tool in 60 LOC:
Manual multi-camera calibration:
Multi-camera object detection, visualization & parameter tuning:
Stereo camera object detection:
Single-camera calibration. This is the most polished application to date, including line & spline editing with control points, 3 edit modes, undo/redo, multiple export formats, 600 LOC.
Model/Animation browser & material editor.
Pure ImGui (over in-engine DX11-renderer).
Unfortunately Github doesn't support WEBM or I'd post a demo here, (gif comes out at 168mb vs 1.3mb webm), but here's some code that you might consider putting into the DearImgui Demo somewhere. Basically I was trying to figure out exactly what all the "GetPostition" and "GetSize" calls actualy... got. so I wrote this. excuse the C#
https://gist.github.com/se5a/6cb1383b10cf2b4c4cf9abdffd642337
Edit: I stuck it up on youtube for shits and giggles. https://youtu.be/d1NpjHFSnb4
Kubata pointed out I'm missing (Textline|Frame)Height[WithSpacing] I'll add those soon. maybetomorow.
Unfortunately Github doesn't support WEBM or I'd post a demo here, (gif comes out at 168mb vs 1.3mb webm), but here's some code that you might consider putting into the DearImgui Demo somewhere. Basically I was trying to figure out exactly what all the "GetPostition" and "GetSize" calls actualy... got. so I wrote this. excuse the C#
https://gist.github.com/se5a/6cb1383b10cf2b4c4cf9abdffd642337
Edit: I stuck it up on youtube for shits and giggles. https://youtu.be/d1NpjHFSnb4
Kubata pointed out I'm missing (Textline|Frame)Height[WithSpacing] I'll add those soon. maybetomorow.
@se5a This is precisely what I believe should be in the documentation. It's a clear visual as to what each function does and leaves no room for misinterpretation.
Yeah, I'll try get around to tweaking it a bit more, some of the things there are guesses. I'll have to dig around in the cpp code to try find out exactly what they're getting sizes of.
I'm using ImGui for my nes emulator
Batch of small update - high profile stuff but very few visible tools, so this is more of a "hey this is somehow using dear imgui" than example of fancy uses :)
League of Legends from a RIOT designer tweet
Clash of Clans from a Bloomberg video (https://www.bloomberg.com/news/videos/2019-12-04/how-the-iphone-tormented-the-world-s-happiest-nation-video from 8m29s, thanks Mikko!)
Some control ui for a cool robot by Boston Dynamics being put to bad use https://www.youtube.com/watch?v=2DJmIjKtVkA
And an update of Avoyd (https://www.avoyd.com) always looking good:
Early version of particle/effect editor.
Pure ImGui over in-engine DX11 renderer.
ImPlot has received a load of new features since it was posted above by @ocornut:
Wrapper around ImGui::ImDrawList::Draw...() calls which provides a stateful canvas for drawing primitives. I'm unsure if others will find this useful, but I'm putting it out there...
Simple input debugging overlay with some custom rendering for input axes.
Release of NetImgui
NetImgui is a library to remotely display and control Dear ImGui menus with an associated netImgui server application. Designed to painlessly integrate into existing codebase with few changes required to the existing logic.
Initially created to assist game developers in debugging their game from a PC while it runs on console. However, its use can easily be extended to other fields.
https://github.com/sammyfreg/netImgui
Helps with inputs
Help to declutter the screen
A little unusual but still wanted to share. I needed to achieve a specific style of an ImGui window to not clutter the whole screen so I modified the docking branch a little bit. Created windows are docked instantly into a floating window and cannot be reordered or undocked. They all share the same p_open
value, automatically resize the floating window to fit their content and the selected tab index is kept alive through creation/destruction.
With all my local edits, the window in the gif is created with this code:
if (ImGui::Begin(CONSTANT_szUITitleMain)) {
Menu::DrawLogo();
ImGui::FullWidthButton("Start Chaos");
}
ImGui::End();
if (ImGui::Begin(CONSTANT_szUITitleConfig)) {
Menu::DrawConfig();
}
ImGui::End();
if (ImGui::Begin(CONSTANT_szUITitleAbout)) {
Menu::DrawAbout();
}
ImGui::End();
ImGui::Together<3>(&details::ui_visible, CONSTANT_szUITitleMain, CONSTANT_szUITitleConfig, CONSTANT_szUITitleAbout);
@berkayylmao May be wrong but I feel you could achieve the same result with a regular window with no title bar, starting with a tab bar, and using the AlwaysAutoResize flag? You would just need to be able to add a Close button somewhere.
@ocornut Yeah, probably. I know the floating host window in the docking branch does exactly what you said. Hijacking it felt a little easier though, since the other way around I'd basically need to write code for another floating host window. AlwaysAutoResize
fails to scale down at times since I am using GetRegionAvail() for the buttons and simple columns. It's just a quick hack I put together while testing the docking branch. edit: This also has the additional benefit of having full-on windows as well, SetNextWindow*()
functions etc. work automatically without me having to write code for them per tab idx. I think it's why I went this way, I honestly can't remember.
I'm using ImGui for my emulator frontend, it's a great tool to make a fast gui you can use during development.
I maybe move to the docking branch soon so I can have several core windows become tabs within a single window seamlessly.
That said I'm still uncertain of how to achieve a gui like parsec's, I want the final program to have a 10-foot style gui.
Hello, Dear ImGui is a library which is a kind of "starter pack" for ImGui that enables to write multiplatform Gui apps for Windows, Mac, Linux, iOS, Emscripten, and hopefuly soon Android; with the simplicity of a "Hello World" app.
Hello, World | Advanced Docking | Classic ImGui Demo |
---|---|---|
![]() |
![]() |
![]() |
Code | Code | Code |
Backends : SDL2 + OpenGL 3 or OpenGLES3, Glfw3 + OpenGL 3, Qt
Adding backends should be easy : they are implemented by deriving an abstract class whose methods follow closely the steps found in the ImGui backend examples.
With HelloImGui, the equivalent of the "Hello, World!" can be written with 8 C++ lines + 2 CMake lines, and it will run with no additional modifications (including the cmake code) on all platforms.
main.cpp:
#include "hello_imgui/hello_imgui.h"
int main(int, char **)
{
HelloImGui::Run(
[]{ ImGui::Text("Hello, world!"); }, // Gui code
{ 200.f, 50.f }, // Window Size
"Hello!" ); // Window title
return 0;
}
CMakeLists.txt:
include(hello_imgui_add_app)
helloimgui_add_app(hello_world main.cpp)
It's still a work in progress but here's an online pixel art editor I made using ImGui. There's also a desktop version but the online one is the only one being deployed right now.
The source code is at: https://github.com/tay10r/libpx
And the website is at: https://tay10r.github.io/libpx_site/editor/pxedit_browser.html
Working on a map viewer / modding tool for Red Faction Guerrilla. Right now it's rendering the bounding box of each zone object. Working on loading some of it's mesh formats next.
I'm glad to introduce Mockingbird, a tool designed to simplify software testing and development, helping with data inspection and manipulation. With a minimalist user interface, you can easily navigate through data, mock any HTTP(s)' system, and get insights.
https://github.com/Farfetch/mockingbird
Thank you @ocornut for the amazing work on imgui. :)
ImGui Manual is an attempt to make an enjoyable and efficient manual for ImGui.
The idea is to use the reference code in imgui_demo.cpp
in order to make an interactive manual.
Below is a screenshot:
But the best way to discover it is I to use it, since it is online:
The video below gives a quick (2 minutes) introduction:
This is a first implementation, and I am opened to suggestions and modifications if this manual is seen as interesting for the community.
Wow @pthom, this is wonderful and very exciting. There are so many things we could do along those lines that I’d love to see explored. I’ll look at this further and will reach for comments.
Wow @pthom, this is wonderful and very exciting. There are so many things we could do along those lines that I’d love to see explored. I’ll look at this further and will reach for comments.
Happy that you like it! Ping me when you want! @ocornut : I created a specific issue for this subject, in order to reduce the noise in this thread :-)
I forked ImGui to make it look like windows98. Mainly for a bit of fun, learning the codebase and potentially make an app that looked like this style
https://github.com/JakeCoxon/imgui-win98
Swapped my own GUI implementation for Dear ImGui in my 3D editor / engine. The paradigm of Dear ImGui matches very nicely with the underlying Entity-Component-System architecture. It cut down the GUI code drastically and no longer gives me an headache having to update the GUI code ;). Amazing job!
Youtube: https://www.youtube.com/bramridder Website: http://bramridder.com/conc8/index.php/hobby-projects/projects/dreaded-portal-engine
Yoga Studio is an IDE for robotics, with tools for exploring the space of control parameters. Open source at https://gitlab.com/umbrellaresearch/yoga2/
I've moved recently from Ubuntu to Arch and felt disappointed with the lack of image viewers provided by the community </joke>
so I found my pretext to play with Dear ImGui and write my own OpenGL based image viewer.
Repo: https://github.com/gmagno/igl
This is Part 11, I am splitting issues to reduce loading times and locked the old ones.
Browse all threads using the gallery label.
Also see: Software using dear imgui (you can help complete the list!)
Screenshots Part 1 #123 Screenshots Part 2 #539 Screenshots Part 3 #772 Screenshots Part 4 #973 Screenshots Part 5 #1269 Screenshots Part 6 #1607 Screenshots Part 7 #1902 Screenshots Part 8 #2265 Screenshots Part 9 #2529 Screenshots Part 10 #2847 Screenshots Part 11 #3075 Screenshots Part 12 #3488 Screenshots Part 13 #3793 Screenshots Part 14 #4451 [...] see gallery label link above for newer pages.
You can post your screenshots here!