not ok to call glUseProgram(0) in destructor