I just realized I accidentally sent this to Ethan only...
> I suggest that a better approach would be to add a pass that splits large
> triangles into smaller pieces before sorting and rendering.
Not really. Size doesn't really even have anything to do with it.
Splitting by size is just as wrong as changing the sorting criterion.
The reason polygons need to be split is to resolve cases where for a
given set of them, none can safely be drawn first.
The algorithm that's needed is the full-featured version of "depth
sorting", known as the Newell-Newell-Sancha algorithm. Any decent
textbook on computer graphics has it.
Mouse interaction might even profit from the trade-off of preprocessing
overhead vs. update speed in this area that this offered by the BSP tree