2014-10-19 15 views
5

Czytam mapę wysokości z pliku i renderuję ją za pomocą pasków trójkąta.Dlaczego moja scena OpenGL ma problemy z buforowaniem głębi?

heightmap:

enter image description here

To działa dobrze, to jak to wygląda:

enter image description here

Wygląda w porządku, ale tylko z tego kierunku. Gdybym włączyć aparat trochę, to zaczyna się dzieje:

enter image description here

Wydaje się, jakby mój bufor głębi jest uszkodzony. Mam go włączoną i działa dobrze z inną geometrią.

Czy ktoś wcześniej miał taki problem? Nie wiem nawet, czego szukać. Dzięki!

Edycja:

My Konfiguracja macierzy projekcji

1,2062851 0,0 0,0 0,0

0,0 2,1445069 0,0 0,0

0.0 0.0 -1.0 -1.0

0,0 0,0 -0,2 0,0

_fieldOfView(50.0f), 
_nearPlane(0.1f), 
_farPlane(10000.0f), 
_viewportAspectRatio(16.0f/9.0f) 
+0

Czy możesz pokazać konfigurację macierzy projekcji, a także zawartość pliku mapy wysokości? :) – Iggy

+0

Może również pomóc włączyć tryb wireframe, aby wizualnie sprawdzić artefakty. 'glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);' – Iggy

+0

Hej, dzięki za odpowiedź. Zaktualizowałem pytanie. Aktywacja szkieletu była pierwszą, którą zrobiłem i wygląda dobrze - http://i.snag.gy/fKpx1.jpg – qwertzguy

Odpowiedz

0

Dziękuję wszystkim za pomocne komentarze. Znalazłem problem i mam nadzieję, że inni, którzy mają ten problem, uznają to rozwiązanie za użyteczne. Musiałem ponownie włączyć buforowanie głębi przed każdą klatką (glEnable (GL_DEPTH_TEST)), zamiast raz przy tworzeniu renderera. Miałem wrażenie, że jest to stan globalny, a więc nie trzeba go resetować za każdym razem, gdy go renderuję.

produkt końcowy wygląda tak, bez żadnych problemów buforowych głębokość:

enter image description here

Tak czy inaczej, mam nadzieję, że to pomoże ktoś.

+6

W rzeczywistości 'glEnable (GL_DEPTH_TEST)' jest stanem globalnym. – concept3d

+7

Być może aktualizujesz stan 'GL_DEPTH_TEST' gdzieś w swoim programie, upewnij się, że wyszukujesz wszystkie wystąpienia parametru" GL_DEPTH_TEST ", aby oczyścić sposób, w jaki sobie z nim radzisz. –

+0

Dzięki za odpowiedzi, sprawdzimy to. – qwertzguy

Powiązane problemy