In addition to establishing the clear color and enabling depth buffer rendering, we initialize variables used in creating our scene. Our world consists of a Wavefront (obj) model with a pointer to it held in the variable model. Since our scene has no initial model established, we set the pointer to NULL. Our light color is stored in the array lightColor and is set to gray.
Since the program allows the user to rotate the object about the x and y coordinate axes, we use two separate variables for each axes to track the rotation. Discussion on the Mouse and MouseMotion functions gives the reason for two variables per axis. The variable dragging is used in communicating from the Mouse function to the MouseMotion function whether the left button is pressed and dragging is permissible
Last, we set our viewing and projection transformations. We do not set the lighting in our init function since it can change during execution through user interaction.