-
-
Notifications
You must be signed in to change notification settings - Fork 10.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Gallery: Post your screenshots / code here (PART 1) #123
Comments
Here's our basic usage, nothing too glamorous: We have a main, top level panel called "Debug" which has some of the most commonly used options available as checkboxes and whatnot. Long before ImGui, I wrote up a simple text console which we had to enable everything with by typing in commands and values. Our method for going into more specific debugging functionality consists of separate windows which are toggled on/off through buttons on the top level panel. This is already starting to get unwieldy since we're starting to get quite a few different windows and sometimes there is legitimate need for having quick/easy access to multiple windows, but you don't always want to see all of them at the same time. Haven't had a chance to spend that much time on how to solve that problem yet. Pretty simple stuff though. Most of our initial use when I discovered ImGui was basically making a GUI version of text console variables, such as the rendering control panel. Before, we literally had to type in various settings as text like: r_lightingorientation 123 72 or r_lightingcolor 169 102 0 148. That sucked; ImGui is much better! Some of the more useful usage we have is for inspecting the live game state. "Mech debug" is for selecting a mech and seeing some of its most important internal state and coercing AI states for the state machine so we can debug behaviors more easily. There are also some parameters that we can change live on the mech so we can see the effects of different values, like how much health they have or how much damage the guns on the mech do. Something I would like to really expand on with ImGui usage in our game is to move as much of our game entity editing in-engine as possible. Our current workflow for editing the entity data is really slow and painful: find the corresponding resource file describing the entity (a .json file) and hand edit the file in a text editor. Once changes are made, you need to reload the game so it refreshes all the data. With ImGui, I'm hopeful that I can move this process into the game and remove a lot of tedious steps like finding the right resource file and having to save/restart. |
Dale, Thanks for posting those info. On the last project I've worked on at Media Molecule what I did is that I mapped a "main menu" window to the right-click. This menu would show all available tools and clicking on an option to toggle it would make the new window appear, and also make the main menu window disappear. So the flow was: right-click (anywhere), left-click on an option, and you would have the new tool. It worked reasonably well. The addition of actual "menus" in ImGui would probably help for this kind of base selection to be always available and not taking much screen real-estate. Attached two screenshots courtesy of Pastagames. Richg42 also has a profiler showing here that he quickly made for LZHAM |
This guy appears to have implemented a custom widget to edit transfer function for a fluid simulation: This blog shows something (nothing special in term of imgui usage, but the blog itself is interesting) Also custom plot here |
Shot courtesy of Alejandro Hitti |
I ported a procedural tree generator from javascript to c++, and wanted to do an editor for it. I started with AntTweakBar, which was fine up to a point, but I wanted to add some features which would have required me to basically roll my own UI library. ImGui was pretty easy to drop in, and I got the texture previews etc. in the GUI. Project can be found at https://github.com/jarikomppa/proctree |
Not sure what is happening in this video :) cinder stuff by Bruce Lane |
More on the above. Bruce Lane at Sophia Digital Art ( http://www.sophiadigitalart.net/ ) this week-end used ImGui for a live cinder-based performance. Here looking totally night-time-live-performance legit: |
this is awesome (just found this) - this should be a wiki page IMHO!! |
thank you Omar, I agree this page should be better seen, like @extrawurst says ;-) |
Post of ProDBG which is a debugger I'm working on that is using ImGui https://github.com/emoon/ProDBG This screenshot shows the C64 (Connected to the VICE emulator) backend in action. Notice that the tool isn't at all ready for use yet but making progress more and more :) |
@extrawurst C-->D wrappers put to good use |
From @paultech who is making an amazing game, see more at https://twitter.com/techcompliant Also Media Molecule's project Dreams was announced recently. It is the last project I've worked on there and it is the project that led to releasing ImGui. I ported the initial version of the library from Tearaway to Dreams and then back to Tearaway (the two games are not sharing any code) and doing that made the library much more portable and it eventually got released shortly after that. Dreams used a fair amount of ImGui for debugging and prototyping. video https://www.youtube.com/watch?v=1Pxl-0PwQ50 |
From @Pagghiu |
CortexRecognition is a software for Robotic 3D Guidance using single camera created by Recognition Robotics Inc. (http://www.recognitionrobotics.com) |
Selection of stuff gathered Retrocommander (merely a test) MemoryEditor ( https://gist.github.com/ocornut/0673e37e54aff644298b ) |
From #306 |
I am porting LumixEngine from Qt to ImGui, I have not decided yet whether I will stick with Qt or switch |
@nem0 Nice. Would be interesting to hear about your feedback on how this transition is going, what you feel are the pros and cons and what could be improved in ImGui. |
Cons:
Pros:
Finally, I think ImGui is more suitable for some apps (i.e. in my case an editor) than Qt. |
Some answers,
This would depend exactly on what behaviour/feature you need. A list-view is essentially a child window (so it has its own independent scrolling) in which you can draw columned content, and use Selectable() in the first one perhaps with the ImGuiSelectableFlags_SpanAllColumns flags. So it should work. If you want to get headers, sorting, re-ordering columns it is possible but more awkward and not first-class citizen at the moment. Maybe #125 has some tips. I would definitively want to improve columns to make better headers/sorting/scrolling feature easier to setup.
That's essentially drawing a few custom quads which you can use using the ImDrawList api. I'll probably add something by default.
Agreed. We can work on it, as discussed in your thread #346
That's a rather open-ended feature so I wouldn't know where to start right now, need to spend time thinking about it. I would suggest to anyone to wants docking to start implementing something on user's side. I will add a micro example just to do how to can best do it but the details would need to be end-user. It'll probably need to use imgui_internal.h at the moment.
You can do it with either a window spanning both monitors, or two window in which you'd render two halves of a larger io.DisplaySize. May be a bit awkward but should work.
I'd suggest to try creating custom widgets. Just grab the PlotHistogram() code, if you strip it of the generic stuff it'll end being very little code and you'll have complete control over it (e.g. use it to edit curves, etc.). I'm open to any new feature for the Plot api that would make sense but I have an intuition we'd have revamp the API. Thanks for the feedback :) |
Thanks for the answers, in fact most of yout suggested solutions is exactly what I planned to do. I meant the treeview with columns, not list view. But I manage to solve that too (fake it a little, but it works), it can be seen here (there is still some unnecessary old code left) if anyone wants to do something similar |
I used imgui for an open source voxel editor I just released: https://github.com/guillaumechereau/goxel. It was the first time I used imgui and I am very happy with it, thanks Omar. For goxel I made a basic color picker (GoxColorEdit in |
Success! Re-creating the render target view before calling @ocornut thanks again for your amazing project! |
This is Part 1. I am splitting issues to reduce loading times and locked the old ones. Also see: Software using dear imgui (you can help complete the list!) |
nice |
This is Part 1, I am splitting issues to reduce loading times and avoid github collapsing messages.
Browse all threads and find latest one to post to using the gallery label.
Also see: Software using dear imgui (you can help complete the list!)
You can post your screenshots here!
Open thread for posting examples of the way you are using ImGui.
e.g. those are some of the example mini applet implemented at the bottom of ImGui::ShowTestWindow()
Except we're looking for real world usage! (I have a few things that are unfortunately under NDA at the moment, so user contributions are welcome)
The text was updated successfully, but these errors were encountered: