Czytam niesamowity samouczek OpenGL . To naprawdę świetne, zaufaj mi. Tematem, w którym aktualnie jestem, jest bufor Z. Oprócz wyjaśnienia, o co w tym wszystkim chodzi, autor wspomina, że możemy wykonywać niestandardowe testy głębokości, takie jak GL_LESS, GL_ALWAYS itp. Wyjaśnia również, że rzeczywiste znaczenie wartości głębokości (która jest najwyższa, a która nie) może być również dostosowane Jak dotąd rozumiem A potem autor mówi coś niewiarygodnego:
Zakres zNear może być większy niż zakres zFar; jeśli tak, to wartości przestrzeni okien będą odwrócone, jeśli chodzi o to, co stanowi najbliżej lub dalej od widza.
Wcześniej mówiono, że wartość Z w obszarze okien wynosząca 0 jest najbliższa, a 1 jest najdalsza. Jeśli jednak nasze wartości Z w przestrzeni klipu zostałyby zanegowane, głębokość 1 byłaby najbliższa widokowi, a głębokość 0 byłaby najdalsza. Jeśli jednak zmienimy kierunek testu głębokości (GL_LESS na GL_GREATER itp.), Otrzymamy dokładnie ten sam wynik. To naprawdę tylko konwencja. Rzeczywiście, odwrócenie znaku Z i test głębokości był kiedyś istotną optymalizacją wydajności dla wielu gier.
Jeśli dobrze rozumiem, pod względem wydajności odwrócenie znaku Z i test głębokości to nic innego jak zmiana <
porównania na >
porównanie. Tak więc, jeśli dobrze rozumiem, a autor nie kłamie ani nie wymyśla, to zmiana <
na >
dawną była niezbędną optymalizacją wielu gier.
Czy autor czyni rzeczy, mam nieporozumienie coś, czy to rzeczywiście jest tak, że raz <
był wolniejszy ( niezwykle , jak mówi autor) niż >
?
Dziękujemy za wyjaśnienie tej dość ciekawej sprawy!
Oświadczenie: Jestem w pełni świadomy, że złożoność algorytmu jest głównym źródłem optymalizacji. Co więcej, podejrzewam, że w dzisiejszych czasach zdecydowanie nie zrobiłoby to żadnej różnicy i nie proszę o to, aby cokolwiek zoptymalizować. Jestem po prostu bardzo, boleśnie, może zbyt ciekawie ciekawy.