Problem jest związany z tym, jak fizycznie są przetwarzane trójkąty(z których składają się meshe). Przynajmniej w OpenGLu rozwiązywało się część problemu tak, że trójkąty obsługujące przezroczystość przekazuje się do rysowania na końcu, poczynając od najdaszego. Jeżeli bardzo ci zależy, żeby się poprawnie wyświetlało, wyodrębnij pojedyńcze trójkąty i ręcznie posortuj.
Masz dwuwymiarową tablicę kolorów (dwordów) i taką samą tablicę wartości głębokości (depth buffer). Przed wyświetleniem ramki, obie tablice są czyszczone. Teraz załóżmy, że przekazujesz trójkąt do narysowania. Jego wierzchołki ją projektowane (obliczenia perspektywy, zeby przedstawić w 2D), a następnie dwuwymiarowy trójkąt jest rysowany. Wszystkie wartości z wierzchołków są interpolowane na piksele na powierzchni trójkąta. Głębokość, gdy zostanie obliczona dla danego piksela, jest porównywana z wartością głębokości z depth buffera. Jeżeli dany piksel jest bliżej, to jest rysowany, a bufor głębokości zmienia wartość na ten punkt.
Wszystko działa ładnie dla nieprzezroczystych trójkątów. Gdy jednak najpierw narysujesz trójkąt przezroczysty, a następnie za nim jakiś inny, to ten drugi nie będzie widoczny, bo nie przejdzie testu na głębokość. W odwrotnej kolejności jakoś by przeszło, gorzej, jakby się przecinały.</url>