2010-12-12 7 views
7

Czy w OpenGL możliwe jest narysowanie sekwencji wielokątów, które nie sprawdzają głębi (tak, że zawsze będą rysowane przed innymi wielokątami narysowanymi przed to, biorąc pod uwagę ich pozycję z)Zapisywanie do bufora głębi bez testowania głębokości w OpenGL (bez shadera)

ale również w tym samym czasie, nadal zapisują do bufora głębi?

Przypuszczam, że można to zrobić za pomocą shaderów, ale teraz nie mam do tego dostępu.

Odpowiedz

16

Nie ściśle mówiąc (od man page):

bufor głębokość nie jest aktualizowana, jeśli test głębokość jest wyłączone.

Ale ... można mieć test głębokość włączona, nie mając żadnego fragmentu zdać egzaminu:

glDepthFunc(GL_ALWAYS); 
glEnable(GL_DEPTH_TEST); 

Oczywiście, masz ostatnią Z napisany przez działanie, które nie najbliższa do widoku.

3

Można to osiągnąć tylko za pomocą dwóch przejść. Pierwszym z nich jest do zapełnienia bufora głębokości tylko przy użyciu maski koloru:

glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); 

drugim przejściu ponownie włączyć pisanie kolorów, wyłącz testu głębokości i uczynić swoją sekwencję wielokątów w kolejności.

Powiązane problemy