GLTools and GLUT are not the same thing. GLUT is responsible for dealing with things outside of OpenGL. GLUT creates and manages a window and an OpenGL context; the actual stuff that goes on within that context (aka: OpenGL) is not GLUT's responsibility.
Maik already covered the reasons why you don't see GLUT in serious applications. GLTools is another matter.
GLTools is just a framework, a wrapper around OpenGL stuff. There are many reasons not to use it in serious work:
- It's inefficient. If performance matters, you're going to want to sidestep it.
- It's not very good. Take the GLShaderManager for example. It either loads the shaders or returns 0. If there is a compiler/linker error, it gives no information on this. Yes, it writes the log to stderr, but not everyone has stderr piped to somewhere that is visible. Exceptions are rather harder to ignore.
I've had people arguing about the fact that the book doesn't really teach how to use OpenGL but instead it teaches how to use two of the wrapper libraries related to it
This is an aside, but generally the problem with regard to this is quite simple. 5th teaches you to use the framework before explaining what that framework is doing. So you learn how to use its mesh loading, how to use its perspective matrix generation code, its default shaders, etc, all before learning what a shader is, what vertex attributes are, and so forth.
It's basically fixed-function programming for the first part of the book. It just uses its own fixed-function code rather than OpenGL's.
It's not that it uses a framework that's the problem. The problem is that it uses the framework to hide details that haven't been explained, rather than to hide details that are unimportant to the current lesson. After you've seen the shader loading code a few times, you don't need to see it again, so it can be a library function.
A better way to structure the book would have been to use the pieces of the framework after showing the underlying OpenGL calls that the framework is doing. The standard set of shaders are fine, but it should use them only after the user has seen shaders in action manually. The same goes for mesh loading and handling, textures, etc.