Midterm Review Information
The midterm will be Tuesday, October 22
Topics Covered:
- C++: Classes (initialization and methods, object heirarchy), some questions will require general use of C++
- OpenGL: Transformations (Scaling Rotation, and Translation), colors, making objects from vertices, textures, vertex and fragment shaders.
- Threading: Starting a thread, using a separate thread for movement and physics
- 3D: Motion, gravity, floors, basic collision detection, moving through a 3D world, looking up and down.
- STL Vectors: Creation and iterating through vectors.
You can bring up to 10 pages. There won't be any questions specifically on blender or .obj files.
OpenGL Level of Detail
We've used OpenGL a fair bit, but this also isn't GPU programming. So I wouldn't expect you to know how to use a geometry shader, for example. Since we haven't added lighting, we've only used the fragment shader to apply textures. Some questions I think you should be able to answer:
- What is the difference between the vertex shader and the fragment shader?
- Suppose you draw an object with 30 triangles, on a screen with a resolution of 1280 by 800. Which will be invoked more times, the vertex shader or fragment shader?
- If a vertex has a position, texture coordinate, and normal vector, how many floating point numbers will be associated with one vertex?
- What is the meaning of "uniform" in GLSL?
3D Math
Although we've used 3D math quite a bit, we didn't really dive into the matrix aspect of it. We did cover translation, scaling, and rotation, at least using the GLM library functions for these. Here are some examples of questions I think you should be able to answer:
- Suppose you need to perform a rotation and a translation. Why does it matter which order these are done in?
- How do you figure out the distance between two points in 3D?
- How can we determine if a point is inside a particular bounding box? Assume the bounding box is rectangular.
- How do you convert from a heading and elevation to a vector?