[Foamy-mouthed-rant]
Just sticking my oar in here, as I myself have spent(wasted) some(lots of) time making my own GUI system for Ogre, and I have finally decided to switch to using CEGUI.
It only took a few hours of tinkering and a few helpful pointers from the nice chaps on the CEGUI forum to get it all compiled and linking with my game.
http://youtu.be/3-EzARo2EBM
[youtube]3-EzARo2EBM[/youtube]
In the vid you can see my own GUI which I am switching out in favour of using CEGUI. In the top left you can see a CEGUI::TaharezLook test window, and a CEGUI::TaharezLook mouse pointer in the centre of the screen.
Tomorrow I can plumb in the key/mouse injection code from OIS->CEGUI and then start making some proper GUIs with it.
My own GUI system is one that I wrote a couple of years ago for console games when I was in the games industry before I went Indie. It's actually in a whole bunch of 360/PS2/PS3/Wii games. But getting it to half-work with Ogre has been an utter pain in the arse.
The reason for me switching is also seen in the video. Whenever I toggle on an Ogre postrender filter effect it interferes with my sprite system and my GUI disappears (some renderstate conflict somewhere), which is no good.
Note that CEGUI does not suffer from this problem, and stays perfectly visible when post-filter effects are applied. Also my sprite code interferes with Ogre's shadow buffer so I have had to disable shadows until now, which again, is no good.
My sprite system is based on the HMoraldo Ogre2D class which can be found on these forums. And I have spent countless hours trying to make it not interfere with Ogre's post-filter effects and shadow textures.
An additional problem I have struggled with when using my own GUI system alongside Ogre: I can't for the life of me get the texture-filtering to be consistent between DirectX and OpenGL. (Another renderstate conflict somewhere.) This is a new problem I recently encountered when getting my game Linux/Mac-ready. Just be aware, there are a bunch of hurdles and conflicts to overcome when you try and implement a flexible 2D sprite system alongside Ogre. CEGUI has already wrangled these conflicts into submission for you.
I have wanted to make the switch to CEGUI for a while now as the scrollable windows will make doing things like scrollable tech/research-tree GUIs a breeze. My scrollbars don't yet function, and my font support is nowhere near as good as CEGUIs.
I accidentally stumbled upon the CEGUI-Unified editor a couple of days ago and after tinkering with it for a bit, I saw how easily I could change the look of the CEGUI::demos with it. This is the point where I finally swallowed my stupid pride and decided to make the switch to CEGUI.
So, given the time I have lost implementing my own solution (because of myriad conflicts between my sprite code and Ogre's PostFilters & ShadowTargets), and given that I got CEGUI working in only a few hours, and also given that CEGUI now has a very nice Drag&Drop GUI editor, I would strongly suggest you spend at least _one_ day playing with CEGUI before you spend any time rolling your own GUI system.
I SURE WISH I HAD!
[/Foamy-mouthed-rant]
Cheers,
Nick
