If possible, I think it is possible to transfer part of the discussion about DirectGUI to a new topic. Some forums have this feature.
While it is all the things you said, it doesn’t have markdown support which most modern gui systems use.
I made an initial effort to embed Panda3D in PySide2/Qt5 here:
If anyone has any feedback that would be appreciated.
Hm. Nothing is perfect, but I think that markdown is not that hard to implement.
@rdb @CFSworks @Moguri
This thread has lost a bit of traction, maybe it’s time for a vote, what Panda should support as main GUI framework ootb and then write up a doc on dropbox paper on how to proceed?
Perhaps we could use this library to add markdown capabilities to LUI:
This library has no dependencies, and is written in pure C, so it should be easily wrapped to C++.
The license is 3-clause BSD.
I think the biggest potential downside of LUI would be the risk of it not being maintained properly to keep up with Panda3D and I don’t think our core contributors should have to maintain an entire GUI framework (however lightweight it may be), since their time could easily be spent on more important features/fixes in Panda3D.
IMO an API extension that allows for easy/easier binding of an external GUI framework of choice and some “easy to integrate” basic GUI that is being actively developed by a third party would be a good compromise. After some more window shopping, my current favorite is Dear ImGui, although I’m not entirely sure I understood @CFSworks second Con entirely:
Would that also be true if implemented in C++ and bindings exposed to Python through interrogate?
I think immediate-mode in this case means the API is immediate-mode, not that it uses immediate-mode OpenGL draw calls, so it wouldn’t need to be run in the draw thread. However, it probably would still need to be run every frame. This might be an issue for very complex UI systems.
The opposite of an immediate-mode API would be a retained-mode API like LUI, where you place elements in a DOM/tree. LUI is very efficient (the entire GUI is rendered in one draw call), but there is the downside of maintenance, so I would only choose it if we don’t find a superior solution (it’s still better than building a new one from scratch, of course).
The primary advantage of an immediate-mode GUI like IMGui is how very easy it is to put something together, which makes it a great choice for building tools.
What also comes to mind is, which of the mentioned frameworks also are portable enough for use on android and possibly on ios in future releases of Panda3D?
Dear ImGUI isn’t designed for Android/ios from what I gather from their github site/issues.
IMGui would probably not be the greatest because it is intended for tools, not game guis, as stated in its readme
However, as Dear ImGui is designed and optimized to create debug tools, the amount of skinning you can apply is limited.
Alternatively, ultralight just released its first stable release.
Ultralight is not FOSS, and only supports three platforms, so it’s not really interesting as a preferred choice of UI framework.