Render with same output as "solid" viewport
Not a complete solution, but perhaps a hint: in the 3d "solid" viewport there's a default (hidden) lighting that heavily influences how the scene is rendered by opengl. The user preferences have settings about diffuse/specular colors and direction for 3 lights, and you can also edit them interactively:



So, you could try a lighting setup that acts in the same or similar way, to render it, perhaps: the position of those lights is not accessible, though through the blender user interface (it could be possible to read those light position/direction through python, perhaps, but I'm not sure at all)