bstone wrote:Since Ogre is a general purpose 3D rendering engine you won't be able to issue one render call while you prepare another one. But if that's critical to your UI then you should consider a 2D engine with a bit of 3D stuff added instead

Nah it's not critical for the UI at all, in my previous UI system 99 times out of 100 it had finished rendering before anything else would have been added to the buffer anyway so a blocking call wouldn't have had much impact on performance anyway.
bstone wrote:If you're fine with Ogre having control over that then have a look at
Gorilla. It's a lightweight library for 2D rendering in Ogre. You should be able to do whatever UI you want with that without limiting yourself too much.
Looks a bit basic for all my UI needs, but it might offer a solution for text rendering (though I'll have to look into it further to be sure), because as I mentioned I'm not keen on using bitmap fonts again and haven't looked into font renders much yet.
jacmoe wrote:AusSkiller wrote:.. it only takes me a week or two to knock out a purpose built functional UI anyway it's usually not worth using existing libraries.
Harh, harh!

No that's really all it takes me to program a *purpose built* *functional* UI, obviously it wouldn't have anywhere near the same level of functionality that a third party library would, but it would be capable of pretty much everything I'd need. And it only takes a week or two to get it functional, but that wouldn't be complete, it takes more time for me to polish it up, fix bugs and add a few additional features here and there but that's just work I can do as needed throughout the rest of the project and it takes a lot less time to do when I write all the code myself compared to when I need to change or add something to a third party library.
jacmoe wrote:I am intrigued: what exactly is it you need from existing Ogre based GUIs that they don't give you?
The main thing that I keep running into is the mixing of different coordinate types, sometimes I will want to specify the width of an element as a percentage of parent size, but other times as percentage of screen size, fixed pixel size, reference scaled size independent of aspect ratio, reference scaled size dependent on aspect ratio or even DPI based size. Most UIs don't support different all those coordinate types so I always end up needing to write code to do the conversions for many of the elements to get the desired results which kind of ruins the point of having a data driven UI (which is another thing I want). Android's UI system does a fairly decent job of this sort of thing but there were a few times when I needed coordinate types it didn't support.
I also like using anchor points so I can lock parts of the UI to specified places on the screen, being able to use render textures so I can have 3D models displayed in the UI, fully customizable graphics including the ability to use my own shaders, and a pretty full compliment of elements (buttons, toggles, radio buttons, labels, text entry, check buttons, spinners, combo boxes, sliders, scroll bars, scrollable lists, tab controls, tables, ect.) though I can probably get by without multi-line text entry for this game.
jacmoe wrote:Could you give a list of those you have tried?
I haven't tried any Ogre UIs yet because I want more information so I can make a better decision on how to proceed, but many of the UIs I briefly looked at didn't seem to have what I wanted anyway. CEGUI looked OK but I didn't see any indication that it supported all the coordinates types I like to use

.
bstone wrote:And yeah... this one is not getting any older yet:
Haha, yeah I know, I'm often guilty of re-writing stuff unnecessarily, my colleagues often refer to the time I re-wrote printf because I felt Microsoft's implementation might be slow and it wasn't entirely thread safe, I spent ages working on it even though I knew printf would have been perfectly acceptable, but at least in the end I had an equivalent function that was completely thread safe and many times faster in pretty much all cases. I'm just more comfortable and much more productive when I'm using my own code, I figured I'd make an exception for the rendering engine because Ogre had a lot of features I really couldn't be bothered writing myself in such a robust manner, but UIs are much easier and quicker to code when they are purpose built so I'd rather not use a library unless it already has pretty much everything I intend to use built in.