Depends on how many fps you had before. 2-3fps is a neglectible cost if you were running at 1000fps, while it would be considered a major loss if you were running at 10fps.
Anyway, switching shaders is expected to come at a cost. It’s one of the most expensive state changes.
Well, that drop looks quite a bit more than expected. It may be that it’s dropping back and forth between fixed function and GLSL shader. Try switching between two different shaders instead and see if that makes as large difference.
I believe the drop in performance is more likely tied to the change of the Material properties rather than the binding and unbinding of the shader itself.
I attended an openGL tweaking tutorial in the latest Siggraph and they mentioned something about how costly changing Material properties could get.
Try turning omitting the code where you specify the material specs and benchmark again, that might come up with a better performance. That and you can always pass the object attributes using uniforms
But it was a driver issue. I upgraded the drivers and there is virtually no discernible cost to switching multiple ProgramObjects. GLSL here I come full-speed ahead…
BTW - I used the ati omega drivers at omegadrivers.net. Those of you with Laptops know that Catalyst drivers from ATI won’t work with the mobility chipsets. Instead, one must wait eons for the vendor to role out updates. Anyway, the Omegas still aren’t the latest Catalysts but at least they fixed the slowness. It looks like www.driverheavan.net/patje also has mobility ebnablers for Catalyst, but doesn’t support my 9800 chipset yet…