Je ne peux pas vraiment comprendre ce qui fait qu'une surface chevauche une autre. Dans un moteur 3D que je crée, ma technique échoue dans les cas marginaux.
Ma méthode consiste à trier les surfaces à peindre du plus éloigné au plus proche. Pour déterminer la proximité, je compare les valeurs moyennes de z. Parfois, cependant, une surface qui se chevauche a une valeur z moyenne plus élevée que celle qu'elle chevauche. Ainsi, la surface la plus éloignée est peinte sur la plus proche - ce qui entraîne un rendu bizarre comme celui-ci:
Ce que l'on est censé voir, c'est la surface avant violette du cube uniquement, tandis que la surface latérale rouge est peinte sur celle violette. La valeur z moyenne de la surface violette est plus élevée, et donc plus éloignée. Je doute donc que cette technique soit correcte.
Ce que j'ai également essayé, c'est d'obtenir la distance entre la caméra (c'est-à-dire l'origine) et la surface, mais j'avais besoin d'un point. J'ai choisi le milieu de chaque surface mais cela ne semble pas toujours fonctionner car toutes les surfaces ne sont pas aussi grandes les unes que les autres.
Par conséquent, quel est un moyen fiable pour déterminer l'ordre de proximité des surfaces vers l'origine?