Shader class implementation
What are you thoughts on this implementation?


It is simply awful. Besides code bloat, just look how you declare such objects, and how you call methods on such objects.


  Do you have suggestions for improvements or perhaps an entirely different system?


So, to fix your implementation :


add an interface for your Shader class. Like that, you can have different shader classes for vertex, geometric and pixel shaders
remove all templates
pass the shader's program id to constructor, and remove it from the Parameter class
move 'class Parameter' out of the 'class Shader', and make it a structure. It's member variables do not need to be static. By the way, name should be std::string - not const char*