Tu n'est pas réellement obligé de trier des faces, mais plutôt que de dessiner des cubes, dessines des plans...
Ce que je ferais, c'est de dessiner seulement 3 faces pour chaque cube (équivalent du backface culling activé).
D'abord déterminer si tu dois dessiner les faces "horizontales" ou "verticales" en premier, et pour chacun de ces types de faces, déterminer un sens de parcours (0 -> n / n -> 0).
Ensuite pour chaque cube de la grille (en utilisant les sens de parcours définis précédemment, globalement, ça te fait seulement deux boucles imbriquées si tu es malin), tu dessines les faces dans l'ordre voulu, et voilà.
Puis toujours en dernier les faces "avant" (celles collées à la grande surface de jeu) de chaque cube. (Là l'ordre de parcours importe peu... Et ça peut peut-être être optimisé en utilisant une "grosse" texture avec point sampling où chaque pixel représente un cube)
Et puis voilà, ça fonctionne. Après si tu veux aussi dessiner les faces "arrières", il suffit de faire comme pour les "avant", mais tout au début ^^
C'est un peu chiant mais pas très compliqué
