 |
 |
 |
 |
 |
3D Graphics Pipeline |
|
 |
|
- 3D graphics pipeline that draws 2D lines to represent a 3D viewing space with perspective:
- Maintains seperate coordinate frame matrices for world, view, and model transformations.
- View transformation mode supports rotation and translation along each axis, and perspective adjustments for near/far plane distances and FOV (field of view).
- Model transformation mode supports rotation, translation, and scaling along each axis.
- 3D line/plane clipping to viewport edges and near/far planes.
- Supports multiple viewports of any dimension, defined by dragging a rectangular outline with the mouse.
- Applies world, view, and model transformations to 3D lines, clips them against the near/far planes, transforms them to NDCs (normalized device coordinates), clips them against the viewport edges, and finally maps them to viewport coordinates:
- Transforms 3D points into NDCs using projection matrices similar to those generated by gluPerspective.
- Maps NDCs to viewport rectangle similarly to how glViewport would map them.
- Deferred rendering to allow for depth shading where lines are sorted on their midpoint Z values and rendered from furthest (lightest) to closest (darkest).
- Renders gnomon (xyz<->rgb axis) with current orientation at origin of each coordinate frame.
- Uses generic shape data structure with vertex and edge lists to represent:
- Cubes/boxes and beveled cubes with configurable bevel thickness.
- Pyramids and prisms.
- Spheres with configurable levels of detail (slices/stacks).
- Quake 2 MD2 models (loads only the first frame of animation).
|
 |
|
|
|
 |
 |
 |
 |
|
|
|
|
|