You need to split your triangles so that they are approximately the same size - regardless of whether you are sorting yourself or using the z-buffer. Unless, of course, the z-buffer algorithm also breaks long thin triangles into you.
The problem is that if you have small compact triangles and some long thin ones (for example), the algorithm will skip classifying long thin ones most often. If you use the midpoint of the triangle, there will be points of view where it will be considered βin frontβ of the more compact, if in fact, if it really stands. Take this top view down, where + represents the midpoint.
o -+- 1 -----+------ 2 -+- 3 *
Looking from * to o , the large triangle (2) can be interpreted as being in front of the small triangle (3) and, therefore, be drawn on top of it.
If (2) was broken into 3 or 4 smaller triangles, then z-buffering will work longer.
source share