I’ve always viewed GUI development as something I wanted to do, but I’ve always viewed it as some kind of black magic (which is part of the appeal). I’m not talking about high-level GUI development like building an application in .NET or Java, but low-level “what pixel is my mouse clicking on” kind of work. It’s basically a ton simple math using Cartesian coordinate system, but as a I said it’s a ton of it and after awhile my head hurts. However, the work is rewarding, and what makes it so rewarding is that when something works I can show Kate and say, “hey look my drop-down menu actually works now.”
Another interesting part of the work is there are lot of things that happen in GUIs that one doesn’t even necessarily think about it. For example, if you mouse over over an item on a drop down list does it stay highlighted when you move away from that location? Yes, it does. The reason for developing my own OpenGL GUI has two main reasons (the same reasons for developing my own programming language): to prove to myself that I can actually do it, and so that I understand 100% of the code base making modifications later easier.
There’s also a another important reason, and that is to provide the end-user with a complete self contained development environment for modifying the game. What got me so interested in game development in the first place was modifying other games when I was a teenager, so the biggest goal in developing my own game has been to design an engine that allows for a heavy degree of modification. Now the game I’m working might be total garbage, and all this extra development time could have been all for not, but I’d rather plan for success than for failure. At least that’s what I’m telling myself.
In any case, I have the following stuff working:
Windows
Titlebar
Drop-down list
Checkbox
Textbox
Textarea
Labels
Dragging
Minimizing
Closing
Slider
Progress bar
Using cursor in text fields
Todo:
Cut & Paste
radio button
tabs