Non riesco davvero a capire cosa fa sì che una superficie si sovrapponga ad un'altra. In un motore 3D che sto creando, la mia tecnica non riesce in casi limite.
Il mio metodo consiste nell'ordinare le superfici da dipingere dal più lontano al più vicino. Per determinare la vicinanza, sto confrontando i valori z medi. A volte, tuttavia, una superficie sovrapposta ha una maggiore valore z medio a quello che si sovrappone. Pertanto, la superficie più lontana viene dipinta su quella più vicina, risultando in un bizzarro rendering come questo:
Ciò che si intende vedere è solo la superficie frontale viola del cubo, mentre la superficie laterale rossa è dipinta su quella viola. Il valore z medio della superficie viola è più alto, e quindi "più lontano". Quindi ho qualche dubbio sul fatto che questa tecnica sia corretta.
Ciò che ho anche provato è ottenere la distanza dalla fotocamera (cioè l'origine) alla superficie, ma poi avevo bisogno di un punto. Ho scelto il centro di ogni superficie ma anche questo non sembra sempre funzionare perché non tutte le superfici sono grandi l'una con l'altra.
Pertanto, qual è un modo affidabile per determinare l'ordine di vicinanza delle superfici rispetto all'origine?