Creating a state machine class to keep track of shader states and programs