it seems a bit of shame this has the 'opengl is a target' and 'inline #ifdef for platform dependency' mentality given the following and the prolific efforts on it. the combination of the two will make it hard to make more generic... e.g. to target any graphics API in the future.
the level of abstraction is also missing to make that even easier... futureproof OO design is about abstracting the concepts generically. most of the classes here are very opengl centric... sure it can't be made 100% futureproof, but you can make something that becomes easy to port until we stop using triangle meshes (and actually... with a bit more thought even that isn't such a restriction that it needs baking utterly into the design at every level)