Take the 2-minute tour ×  I cannot really figure out what causes
one surface to overlap another. In a 3D engine I'm creating, my
technique is failing in edge cases.  My method is sorting the
surfaces to be painted from the furthest to the closest. To
determine the closeness, I'm comparing the average z values.
Sometimes, however, an overlapping surface has a higher average
z value than the one it is overlapping. Thus, the surface
further away is painted over the closer one - resulting in
bizarre rendering like this:  Large purple square with a section
of red on the side  What one is meant to see is the purple front
surface of the cube only, whilst the red side surface is painted
over the purple one. The average z value of the purple surface
is higher, and therefore 'further away'. So I'm having some
doubt as to whether this technique is correct.  What I also
tried is getting the distance from the camera (i.e. origin) to
the surface, but then I needed a point. I chose the middle of
each surface but also this d