This assignment is an extension of your assignment 3 rasterization portion. Points for this assignment will depend on how much you implemented in assignment 3. The goal of this assignment is for you to create your own Real time 3D graphics API. The final proof of this assignment is writing a 3D tri model viewer that uses only your 3D graphics API. You may not use any OpenGL except for GL_POINTS or glDrawBuffer (I recommend glDrawBuffer).

You should plan to implement the following:

Scan conversion/rasterization: your last assignment should have done this.
Clipping polygons and lines: your last assignment should have done this.
Handling affine transforms and projections: your API should solve for the correct matrices given more user friendly function calls.
Some form of visible surface identification/hidden surface removal
Clean function interface
Lighting in 3-space: flat, gouraud or phong shading
Handle textures
Allow the user to read/write from/to various buffers

Point totals for this assignment will depend on how much you’ve finished already in project 3. It will also depend on how well you handled each of the above portions. Discuss points you need and what you plan to complete, and we will come to a decision on points.