What is the difference between modeling and rendering?
Modeling defines what the objects are; rendering decides how they appear (lighting, color, projection).
What is the difference between a point and a vector?
A point represents a position in space and can be translated; a vector represents a direction and magnitude and cannot be translated.
What coordinate system does OpenGL use?
A right-handed coordinate system (curl fingers from +X to +Y → thumb points in +Z).
What is the most basic polygon used in 3D graphics?
The triangle — because it’s always planar and easy for GPUs to render
Why do we prefer triangles over other polygons?
They are always flat (planar), stable for lighting, and efficient for GPUs.
What determines a polygon’s “front” face?
The winding order — usually counterclockwise (CCW) vertex order defines the front face.
What happens if a polygon is non-planar?
lighting and shading can behave incorrectly because the surface normal is undefined.
What is the general equation of a plane?
ax+by+cz+d=0. (a,b,c) is the planes normal and d is offset
How can we tell which side of a plane a point lies on?
Result > 0 → one side
Result < 0 → other side
Result = 0 → on the plane
What is a mesh?
A mesh is a connected collection of polygons (usually triangles) that share vertices.
What are the two main components of a mesh?
Vertex table — stores all vertex data (positions, normals, colors, etc.).
Face table — stores indices showing which vertices form each triangle.
What is the benefit of using meshes instead of separate polygons?
Shared vertices reduce redundancy, improve performance, and enable smooth shading.
What’s a polygon soup?
A disorganized collection of unconnected polygons with no shared vertices — inefficient and can cause gaps.
What is a triangle strip?
A connected series of triangles where each new triangle shares the previous two vertices.
→ Reduces data redundancy.
What is a triangle fan?
A set of triangles sharing one common central vertex — useful for circular or fan-like shapes.
How do you draw triangle strips or fans in OpenGL?
glDrawElements(GL_TRIANGLE_STRIP, …) or glDrawElements(GL_TRIANGLE_FAN, …).
What is a normal vector?
A vector perpendicular to a surface — shows which way it faces and is essential for lighting.
What are the two types of normals?
Polygon normal: one per face (faceted look)
Vertex normal: average of surrounding faces (smooth look)
How do you compute a polygon’s normal from three vertices?
u=v2-v2 v=v3-v1
take cross prod, normalize
Why do we normalize normals?
To ensure consistent lighting calculations (the lighting intensity depends on unit-length normals).
How are vertex normals calculated for smooth shading?
Average the normals of all faces touching that vertex and then normalize the result.
How does a mesh map to OpenGL structures?
Vertex Table → VBO (Vertex Buffer Object)
Face Table → EBO (Element Buffer Object)
Combined via VAO (Vertex Array Object)
Why is shared vertex data more efficient?
Because each vertex is processed once and reused, reducing memory and computation.
Why is vertex order important for 3D rendering?
It defines which side of a polygon is front-facing, affecting lighting and back-face culling.