MinimalUI glNext Rewrite - nselikoff/Cinder-MinimalUI GitHub Wiki
The main purposes of this block:
provide a "customer facing" UI (i.e. the target user is the end user of the app first, the developer second), specifically for our two existing apps, Beautiful Chaos and Reymenta
create a beautiful and minimal UI that looks like it had a "designer's touch" versus a UI that looks more like a debug tool
create a UI that works equally well with a mouse (and possibly keyboard) as with a touch screen, and is resolution independent (e.g. will work on retina screens... which it currently does)
create a UI that has a minimal performance impact for apps that are graphically demanding (like Beautiful Chaos and Reymenta)
glNext
upgrade to work with Cinder glNext
Configuration
support external definition of UI via XML, JSON, LUA or something else. need to decide whether to just allow creation and placement via external scripts, or also more dynamic runtime elements like registering callbacks to buttons
convention over configuration in layout algorithm - make sure it makes sense for most general case, then customize for something like Beautiful Chaos. fix any aspects of the auto-layout that are too specific to the block's roots in Beautiful Chaos (i.e. make it hard for other people to use)
each UI element should have a OSC id out of the box, and be compatible with a MIDI message, and also compatible with a node.js implementation
Performance/Rendering
rewrite drawing code for modern opengl (use VBOs and shaders instead of immediate mode gl calls)
be smart about when to redraw. only redraw parts of the UI that have changed, and only redraw those at a reasonable rate (e.g. 12-25fps)
profile the existing block so we have something to compare to and know if we're actually gaining performance (done: Bruce)
make sure performance is good on multi-window apps
Documentation
add documentation, example screenshots and samples so other people can more easily decide if they want to use it / check it out
Other
consider refactoring UIController into a few subclasses for full height left aligned, specified or auto height left aligned, and centered (w & h required)
Look at what's happening in UIController instantiation... too much. Not every UIController should load fonts, use a huge FBO, etc.
use hasParam/getParam
add support for lambdas on buttons
Clean up use of DEFAULT vals
How to share things like addCallback between various buttons and sliders... almost like a "trait"?
derived *Ref typedefs should clean up need for casting
add a vec3/quat control
check out Bruce's FboPanel
consider adding keyboard configuration and control
it seems every FBO has a size of 2048x2048, could it match the exact size to save GPU memory?