Actually the standard way to handle extensions is in-situ: test for availability before trying to call it.

if (GLEW_ARB_vertex_program) 
{ 
  ...  // Do something with ARB_vertex_program
}


More complexes OpenGl programs will perform tests on several extensions availability and make decision from that:

if (GLEW_ARB_vertex_array_object &amp;&amp; other stuff)
{
   renderingTechnic = VERTEX;
}
else
{
   renderingTechnic = BEGIN_END;
}

... etc


If you want the list of actually used extension it's become tricky.

You have to detect cases like this:

if (GLEW_ARB_vertex_program &amp;&amp; 0) // YOU SHALL NOT PASS
{ 
  ...  // Do something with ARB_vertex_program
}


In this case, you will never enter in the then-statement but your tool may have difficulty to detect it.

Code coverage tools are here to perform this kind of job, but embed ones to perform the comparison with available extension at runtime  is not an option here.

Take a look in the symbol table of your output is neither a solution:


The one for you exe will contain none of OpenGl functions.
The one for the OpenGl library will contain all of possible (not available nether used) functions.


List opengl extensions USED in runtime
How do I make this picture white on transparent background and keep it's semitransparent parts - 

 

(Background is already transparent).
