title: What does GLEW do and why do I need it?
body: <p>Okay, so I already know why I need GLEW, but only up to a point.</p>
  
  <p>If I am using modern OpenGL stuff, probably from version 3.0 onwards, and/or am using the Core Profile, then GLEW is required as without it compilation produced error such as <code>glGenVertexArrays</code> was not declared.</p>
  
  <p>So GLEW does a bit of background work including the modern OpenGL functions we would like to use, probably.</p>
  
  <p>Apart from that, does it do anything else? Also, how does it work.</p>
  
  <p>As an example, does it improve cross-platform compilation? (Require less modifications to code if moving from Linux to Windows or OS X for example?</p>
  
  <p>Does it also improved the "cross-platform-ness" of graphics hardware? For example, say we had two identical computers, including the OS. A program is compiled using OpenGL 4.3 commands on one system. If the other system has a graphics card or driver which only supports OpenGL 3.3, does GLEW help with that? (Compiling shaders for an older version of OpenGL, perhaps?)</p>
  
  <p>So you can probably see I don't actually know what GLEW does or how it does it.</p>
  
  <p>One last point; does anyone know how to use GLEW with GLFW? I might post that as a separate question actually.</p>