Yahfree #1 I'd start with a 2d engine first, they're simpler. I'm working on building a basic 2d opengl engine in bmax, which i'll probably port to C++ eventually.