Millised on parimad näpunäited OpenGL®-i sügavuse jaoks?

OpenGL®-i sügavuspuhver on üks kolmemõõtmelise (3D) graafika programmeerija jaoks saadaolevatest valesti mõistetavatest, keerukamatest ja lõpuks kasulikumatest tööriistadest. Programmi kaadrisageduse suurendamiseks saab puhvrit optimeerida mitmel viisil, sealhulgas lähi- ja kauglõiketasandite õige seadistamine. Muud näpunäited hõlmavad renderduste vahelise puhvri tühjendamist ja stseeni kompositsioonide vältimist, mis võivad objektide liiga lähedale asetamise tõttu põhjustada sügavuse probleemi. Mõningaid kahemõõtmelisi (2D) graafika trikke saab teha lihtsalt ja tõhusalt, kasutades OpenGL® sügavuspuhvrit. Ka kasutatav graafikakaart võib mõnikord tekitada probleeme sügavusega, nii et õige seadistuse kasutamine võib aidata kiirendada ja vähendada tarbetuid töötlemistsükleid.

Üks esimesi probleeme, mis võib mõjutada OpenGL® sügavuspuhvri, mida traditsiooniliselt Descartes’i sügavustasandit tähistava tähe järgi nimetatakse ka Z-puhvriks, jõudlust, on lähi- ja kauglõiketasandite paigutus. Need tasapinnad määravad piirid, mida stseenis renderdada ja mida mitte, ning nende väärtused näitavad kaugust vaatajast, kus kärpimine peaks vastavalt algama ja lõppema. Intuitiivne mõte oleks alustada renderdamist sellest punktist, kus vaataja on, seades lähitasandi nulli, kuid see pole tegelikult õige. Tegelikult ei luba OpenGL® lähitasandit nullida. Kui lähitasandi väärtus on väga väike, näiteks murdosa ühest, siis ei pruugi renderdaja üldse midagi näidata või ei pruugi sügavuspuhvrit õigesti sortida.

See juhtub seetõttu, et mida lähemal on objekt vaatajale, seda täpsemalt arvutab OpenGL® objekti asukoha. Kui kaugus vaatajani läheneb nullile, suureneb arvutatud täpsus eksponentsiaalselt. See aeglustab renderdusaega ja võib põhjustada veidraid graafilisi artefakte ja muid probleeme, peale selle, et arvutatud täpsuse taset on harva vaja.

2D-graafika renderdamisel võib OpenGL®-i sügavuspuhver aidata mõningaid toiminguid lihtsamaks muuta. Sügavuspuhvri kasutamine kompositsiooni paanidena kasutatavate nelikute pisut nihutamiseks võib aidata paanitud stseeni elementidel sujuvalt ringi liikuda, ilma et tekiks kujutisele kummalisi efekte, mille põhjustavad kaks polügooni, mis kattuvad üksteisega samal tasapinnal. Sarnaselt saab ettevalmistatud elemendid peita vaateväljast välja või kaugema lõiketasandi taha, nii et neid saab kiiresti stseeni tuua, kasutades võimaluse korral isegi teisendusi ja pööramisi, et anda eriline sisse- või väljalangemise efekt.

Lõpuks, kuigi OpenGL®-i sügavuspuhver toetab puhvri erinevat riistvara suurust, on kõige parem kasutada 16-bitist versiooni. Seda seetõttu, et enamikus stseenides võib 32-bitise puhvri kasutamine renderdusaega aeglustada. Samuti ei toeta kõik graafikakaardid 32-bitise sügavusega puhvreid, nii et madalaima ühisnimetajani langemine tähendab, et rohkem inimesi saab 3D-programmi käivitada nii, nagu see oli kirjutatud.