I've been hashing over a lot of things in my head recently. I think I'm a little confused because I'm not exactly sure of any specifications for my engine. And because I'm bad at doing that kind of a thing, I'm not going to stop and write a specifications document.
Here's the problem. I've been doing graphics for 3 years. But I've waned in and out, sometimes taking 5 month breaks. I've never taken a graphics course (college didn't offer any). I've never even really met a graphics programmer. I do programming at a great computer company, but it's nothing close to what's required of graphics.
I've learned everything in my spare time the past couple years. But that's not a whole lot. I have a solid understand of the basic graphics principles, and a couple of advanced techniques such as terrain LOD and vertex/pixel shaders. Those were all small sample programs though. Each time I got closer to a unified framework (eventually incorporated loggers, renderers, etc.).
But when it comes to writing an engine, I'm afraid I have no idea where to go after a certain point. And that point isn't very far. It's because I don't have the experience of using an advanced engine, so when writing the Renderer I have no idea what kinds of things I should incorporate. I know that I can write a Renderer, but when I go to use it, I'll probably say, "this is unusable!" It's happened many times...
I have written material systems. Video memory management systems. Scenegraph and spatial partitioning systems. Terrain engines. The problem is incorporating all of this into a unified framework that is easy to use.
It's good to write this out... it made me realize that maybe I should try using a couple different engines and see how they feel. That would probably help a lot. I may try OGRE. I just hope it doesn't take too much time to learn how to use it... I'll also probably look into getting some books. Books are pretty much the only way I can learn about things (besides personal experimentation). Any recommendations?
All this dawned on me last night when I was working on my Renderer. I really how no idea how I should write it. Should it be a simple interface straight to DX, where it basically provides the same functions and parameters with slight simplification? Or should it be more powerful and actually do stuff for me? I just know that if I write it to do stuff, at some point I will say, "I wish it didn't do it that way!" I guess I need to be careful of over-engineering though too.
Blah. Enough. I have an engine to write.