Ok, I've returned to this project.
A simple line-drawing API that can draw colored lines, circles, arcs and regular polygons. And it does not use immediate mode! Why make this? So far, the 2d graphics API has been sprite-only. Sprites are nice, but vector games like the original Asteroids or Lunar Lander can't be done well with sprites.
The 3d portion of the renderer has been able to draw textured meshes for quite a while. These meshes are created programatically by the application. I need one built-in file format for my graphics library to read. I'm choosing obj. Why? It's a text format, its easy to parse, and I already have old code to look at to read it. I probably won't use my old code, but at least I have some working reference material to look at when my new code doesn't work!
I need a simple default lighting model. Yes, yes, the library should let the user load GLSL shader scripts from text files. That's easy; the graphics driver parses the language and its just a pass through. BUT the idea of this whole library project is to be easy to use. I need a simple, basic lighting model that's activated by default so a new user, who hasn't set up lights, will actually see shading as soon as they load and render a model. An advanced user will set a shader. The entire library so far has been designed so that you just turn it on and draw right away. All the common stuff is taken care of. By default 3d has depth buffer on. By default alpha blending is enabled. Etc.