I have a shader that “renders everything” or separate shaders for
Either is fine. There is a slight cost for calling glUseProgram(). So if you have a single shader program to
render many objects in your scene, this can be more efficient. You can pass in flags (like bUseTexture) to
switch between different options in your shader.
However, the performance boost you might
get for eliminating extra calls to glUseProgram() will
likely be small. Having separate shaders
makes each one easier to understand. In
Lab 4 we had a separate toon
shader for rendering the sphere, for example.