Generally some good changes. Often makes things more maintainable, even while adding flexibility.
I added some include guards and GL header includes that were necessary to build on Windows.
You've removed calls to glBindBuffer(GL_ARRAY_BUFFER, 0); after activating buffers. Won't that leave those buffers in use for any subsequent rendering?
I have a few quibbles about function naming being inconsistent: Most functions in FreeOrion code have capital letters at their start, but some of yours don't. Not a major issue, though.
rkupke wrote:
[*]try to get shader even if fog of war is switched off. Necessary because activating fog of war for the first time during program execution would not show any effect before the next turn.
I'd prefer to leave that as it was, so that the calls to the shader-getting code can be avoided when the option is off, in case there are driver issues that would cause that code to crash. Waiting one turn for shaders to be enabled isn't a huge problem.
I'll commit a tweaked version of the code, though.