Care sunt cele mai bune sfaturi pentru OpenGL® Depth?

Bufferul de adâncime OpenGL® este unul dintre instrumentele cele mai greșit înțelese, complexe și, în cele din urmă, utile disponibile pentru un programator de grafică tridimensională (3D). Există mai multe moduri în care tamponul poate fi optimizat, astfel încât rata de cadre pentru un program să poată fi mărită, inclusiv setarea corectă a planurilor de tăiere apropiate și îndepărtate. Alte sfaturi includ ștergerea tamponului dintre randări și evitarea compozițiilor de scenă care pot cauza o problemă de adâncime prin plasarea obiectelor prea aproape unele de altele. Unele trucuri de grafică bidimensională (2D) pot fi efectuate ușor și eficient prin utilizarea tamponului de adâncime OpenGL®. Placa grafică care este utilizată poate fi uneori o problemă cu adâncimea, astfel încât utilizarea setării corecte poate ajuta la creșterea vitezei și la reducerea ciclurilor de procesare inutile.

Una dintre primele probleme care pot afecta performanța bufferului de adâncime OpenGL®, numit și buffer Z după litera care marchează în mod tradițional planul de adâncime cartezian, este plasarea planurilor de tăiere apropiate și îndepărtate. Aceste planuri definesc limitele a ceea ce ar trebui și nu ar trebui să fie redate într-o scenă, iar valorile lor indică distanța de la vizualizator unde ar trebui să înceapă și, respectiv, să se termine decupajul. Un gând intuitiv ar fi să începeți redarea în punctul în care se află privitorul, setând planul apropiat la zero, dar acest lucru nu este de fapt corect. De fapt, OpenGL® nu permite ca planul apropiat să fie setat la zero. Dacă valoarea planului apropiat este foarte mică, o fracțiune de unu, de exemplu, atunci este posibil ca redarea să nu arate nimic sau ar putea eșua să sorteze corect tamponul de adâncime.

Acest lucru se întâmplă deoarece cu cât un obiect este mai aproape de vizualizator, cu atât OpenGL® calculează mai precis poziția obiectului. Pe măsură ce distanța până la spectator se apropie de zero, precizia calculată crește exponențial. Acest lucru încetinește timpul de randare și poate duce la artefacte grafice ciudate și alte probleme, în afară de faptul că nivelul de precizie calculat este rareori necesar.

Când redați grafică 2D, tamponul de adâncime OpenGL® poate ajuta la ușurarea anumitor operațiuni. Folosirea tamponului de adâncime pentru a compensa ușor quad-urile care sunt folosite ca plăci într-o compoziție poate ajuta elementele unei scene cu plăci să se miște fără probleme fără a genera efecte ciudate în imagine cauzate de două poligoane care se suprapun unul pe altul în același plan. În mod similar, elementele pregătite pot fi ascunse în afara câmpului vizual sau în spatele planului de tăiere îndepărtat, astfel încât să poată fi aduse rapid în scenă, posibil chiar folosind transformări și rotații pentru a da un efect special de fade in sau out.

În cele din urmă, în timp ce bufferul de adâncime OpenGL® poate suporta diferite dimensiuni hardware pentru buffer, cel mai bine este să utilizați versiunea pe 16 biți. Acest lucru se datorează faptului că, în majoritatea scenelor, utilizarea unui buffer de 32 de biți poate încetini timpul de redare. De asemenea, nu toate plăcile grafice acceptă buffer-uri de adâncime de 32 de biți, așa că scăderea la cel mai mic numitor comun înseamnă că mai mulți oameni vor putea rula programul 3D așa cum a fost scris.