Assignment 1
- Question 1: In a GLUT program, how is control passed back to the programmer? How is this set up during initialization? Control is passed back to the programmer in the form of the keyboard and mouse. This is accomplished with the glutKeyboard and glutReshape functions. Question 2: What does the parameter to glutInitDisplayMode() specify? The parameter to glutInitDisplayMode() specifies the display mode, whether the display is colored, single, or double-buffered Question 3: What do the calls to glOrtho() and glViewport() accomplish?
- glOrtho() creates the coordinate system for OpenGL drawings glViewport() designates the window size in which the coordinate system resides
Assignment 2
In order to complete this assignment you'll have to understand the STTransform class. Describe libST's representation of a transform and compare it's flexibility to an alternative representation, such as the 4x4 matrix representation Pat discussed in class. For example, can you name a type of transformation that STTransform cannot represent. Describe the order that the STSceneNode class performs the various rotate/scale/translate transforms when drawing the scene (ie. what is the first operation performed on the shapes vertices? what is the second? third?). Are there other orderings that would produce the same result? STTransform gives variables for the separate functions that would otherwise be accomplished with glScale, glRotate, and glTranslate. STTransform cannot perform matrix transformations in the way glMultMatrix can. The order in which STSceneNode performs its transformations is translate, then rotate, then scale. The order in which these occur should not matter.
Note that graphical objects, such as instances of the STImage and STShape class are not scene graph nodes (but they can be contained within STSceneNodes). By inspecting the implementation of STSceneNode, determine if it permissable to add the same object to the scene multiple times (Eg. Can multiple scene nodes contain the same shape object)? Why would one want to do this? There is nothing to prevent multiple scene nodes from containing the same object. One might add the same object multiple times if there is only one object image and it needs to perform several different functions.
Assume you had an STSceneNode n, and a STShape s. How would you add this shape as the first child node of n? How would you add it as the last child node of n? n->PlaceObject(s,NULL) n->PlaceObject(s,s.GetLastChild())
The STImage::read() method doesn't read data off disk, it reads it from the OpenGL framebuffer. The method takes 4 integer arguments. Describe the meaning of these arguments. You will call this method as part of the required code for this assignment. How are the values you pass to STImage::read() determined in clock.cpp? startx and starty are the first two parameters of glReadPixels(), which would seem to set the origin point of a coordinate plane. The third and fourth arguments, width and height, are the positive x and y coordinates that correspond to the image that will be read from the framebuffer.