I develop a multi-touch supported application and thought I’d poke the brain trust re. a question I’ve yet to definitively answer, as well as share my own knowledge on the matter.
My question is, what’s the best C++ based GUI library that supports multi-touch to use with libCinder?
Disclaimer upfront - a lot of this knowledge dump has years of moss on it, so take it with a grain of salt.
Initially, my application used the TUIO protocol only to find that seemingly no longer working / being supported in more modern Windows (8 or 10 I believe) making me switch to just plugging in my multi-touch device directly via USB and using HID. On top of that, I’ve built my own gesture recognition and GUI rendering, but supporting it is becoming tedious and I would much rather switch to a battle-hardened alternative.
Over the past weekend I upgraded to vs2022 and Cinder 0.9.3dev which adds Dear IMGUI. My excitement was lessened a bit when some googling revealed that dear Imgui does not officially support multi-touch.
Further googling led to this list of useful guis: C++ UI Libraries • memdump
So far, the only GUI’s I’ve confirmed to integrate multi-touch support are as follows:
Qt - My experience with this library is while super battle-hardened and supporting multi-touch, I worry about latency. My application ideally needs as low latency GUI behavior as possible. Also, Qt is basically a full application framework - I’ve no experience in only using its gui functionality and as to how easily that’d fit into Cinder.
NoesisGUI - Looks promising until you notice that until your application is ‘ready to ship’ you are only granted on-going trial licenses. I’m tempted to look closer though, without any promising alternatives.
And that’s it - so far. 2 C++ libraries. Very keen to hear if anyone knows of more that natively support multi-touch. Another fallback solution I’ve considered is perhaps building some in-between layer, between cinder and dear imgui to detect pinch/zoom/other gestures. But this would be hacky, and some multi-touch functionality would probably remain permanently out of reach, like interacting with two widgets simultaneously.
Eager for any and all thoughts. Thanks in advance,