I am very curious about how to determine whether an edge is a "left edge". Also, does the "top edge" need to be exactly horizontal?
It was mentioned during lecture that the order in which the triangles were processed by the pipeline could not be used as a tie-breaking rule, as it would not be guaranteed to be consistent (i.e. it might result in flickering edges). In general, are there any assumptions we can make about how an arbitrary API feeds mesh data into the pipeline? Further, are there any steps the API can take to make the overall work of the two (API and pipeline) more efficient, such as preemptively removing occluded faces from the scene or ordering the data in a particular fashion?
@Kuragama Good question. Usually you try to make as few assumptions as possible; a real OpenGL pipeline can handle pretty much anything you throw at it (and should even fail pretty gracefully on things like INF and NAN floating point numbers). There are however stages of the pipeline that, as you say, make life easier further down the line. For instance, there's a clipping/culling stage that throws out triangles that definitely won't be seen (e.g., those that aren't on the screen).
@yongchi Here you go: more than you ever wanted to know about the rules of rasterization! (At least, one possible set of conventions.)