this week i added GUI so i could use it for displaying hud/weapons ammo/power ups etc.
id uses .gui files which basically a script that allows you to define elements to display on the gui such as windows/text boxs/images etc, you can also set there properties like rect, color, text, font and more - this is very easy and fast way to create GUI's.
after you have the GUI script you can render the GUI on a 3d surface in the game.
for example: you can use it to display player info like health, power ups (on 2d screen), or on 3d surface of a weapon to show ammo info.
here is a screen shots of .gui files from id quake4 folder that i'm loading from my engine, for now its rendered on the screen, but next time i will show it inside the game.