Often I get asked why I teach graphics in certain ways. This page is a collection of rants* that attempt to explain why I do some things the way I do them. More will come during the semester.
GLUT is a cross platform toolkit that facilitates OpenGL programming. If you write an application in GLUT, it will run on just about any platform that supports OpenGL. Why do I not like it? There are several reasons. A) The only people using GLUT in the real world are students. You will never see a company writing an application using GLUT. If they want cross platform capabilities, they will do it in their own API's. B) GLUT teaches you to program in an idiosyncratic way nobody really uses in OpenGL applications. There's a lot of emphasis on setting state and leaving it; a very dangerous approach in OpenGL. C) GLUT has its own menu system using popup menus. Do we really need yet another menu system? You don't end up learning to write menus that work like those in every real world GUI. D) GLUT has no dialog box system. How are you supposed to obtain user input?
Programming in native API's like Windows or the X System is just not that hard to do and a more valuable skill than learning yet another application specific API.
2. Doing things right.
A problem with Computer Graphics if that you can't always trust that an image is right just because it looks right. There are many "bad" things you can do that may look okay, but will break or are very inefficient. One example is redundant geometry. You've created the top surface of a box and managed to draw it more than once. This may look fine now, but may cause problems in the future. If you try to ray trace the scene you'll get speckling. Some graphics cards may vary the color depending on the angle. This class is often a very results oriented class. As an example, we won't worry too much about your programming style or comments. But, we will sometimes indicate that you've done something in the wrong way, even though it may look okay.
Note that "doing things right" will be confined to when I think it's important, usually when it's something I know will bite you in the future. We'll sometimes take shortcuts to move on quickly. Here's some examples of where doing it right is very important:
3. Scene graphs.
For some reason most computer graphics textbooks include minimal coverage of scene graphs as a way to describe geometry. The main reason for this is that nearly all scene graph systems are application specific. But, they are nearly always used. Any game engine you work with will require you to put the geometry into a scene graph, as will rendering API's beyond the low level of OpenGL or Direct3D. So, learn how to organize your program into scene graphs. I'll insist on them for the project (but not for the steps).
rant - A loud bombastic declamation expressed with strong emotion
