After writing these classes, I then implemented a factory template to create instances of them:
template< class GraphicsDevice,
The facade just contains a set of Createxxxxx methods that return shared_ptr to one of the items. I can instantiate the template with D3D versions if I want to at compile time. As kunos says, simply wrapping things like glEnable(x) with your own method is a bit pointless. But hiding the gl- nature of the functionality in an OO way can be really useful.