Kateri so najboljši nasveti za delovanje OpenGL®?

Ko je program enkrat napisan, lahko pogosto traja prav toliko časa, da optimizira kodo in podatkovne datoteke, kot je bilo treba najprej napisati kodo. To še posebej velja, ko poskušate izboljšati zmogljivost OpenGL®. Številni dejavniki lahko vplivajo na zmogljivost, od velikosti in formata datotek teksture do količine geometrije v sceni, do možnosti upodabljanja, uporabljenih med rasterizacijo. Dejansko lahko dodajanje kode pospeši delovanje programa, če je ta koda namenjena zaznavanju in izogibanju posebnim funkcijam, ki jih grafična kartica ne podpira. Dobre programske prakse in razumevanje običajnih ozkih grl pri zmogljivosti OpenGL® lahko zelo pripomorejo k izboljšanju hitrosti in kakovosti aplikacije OpenGL®.

Eno področje, na katerem je mogoče doseči velike izboljšave zmogljivosti OpenGL®, je znotraj podatkovnih struktur same aplikacije. Prizori in animacija OpenGL® običajno zahtevajo veliko podatkovnih dreves, podatkovnih struktur in nizov. Uporaba struktur vsebnikov in iskalnih algoritmov, ki porabijo najmanj časa, hkrati pa izpolnjujejo potrebe aplikacije, lahko pospeši, kako hitro se podatki obdelajo in premaknejo v grafično procesno enoto (GPU) za prikaz. Pomaga lahko tudi razumevanje, kako OpenGL® zahteva formatiranje podatkov, saj lahko pride do nekaterih optimizacij med prevajanjem, odvisno od uporabljenega jezika.

Datoteke s teksturami so običajno področje, v katerem je mogoče izboljšati delovanje OpenGL®. Te slikovne datoteke bi morale imeti dimenzije slikovnih pik, ki so samo stopnje dvojke, tudi če strojna oprema tega ne zahteva. Prav tako jih je treba optimizirati v urejevalniku slik, da bodo čim manjši. Na splošno animirani ali premikajoči se predmeti ne potrebujejo tekstur, ki so tako podrobne kot predmeti, ki ostanejo mirni. Uporaba najmanjših možnih tekstur brez žrtvovanja prevelike kakovosti lahko močno poveča hitrost sličic.

Ena pogosta past, zlasti za nove programerje ali umetnike, je uporaba preveč geometrije. Obstajajo številni triki, ki lahko pomagajo zmanjšati število poligonov v modelu, ne da bi pri tem žrtvovali podrobnosti. Ena od pogostih napak je uporaba geometrije modela za predstavljanje podrobnosti, ki jih je mogoče veliko učinkoviteje prikazati na sliki teksture. Večina modelov je pravzaprav zelo preprostih, kompleksne funkcije pa so resnično izvedene z uporabo zemljevidov udarcev, normal in tekstur. Poenostavljeni, optimizirani modeli bodo povečali zmogljivost OpenGL® z zmanjšanjem števila izračunov, ki jih je treba izvesti na vsakem točku.

Za nekatere aplikacije je lahko koristno programirati za najnižji skupni imenovalec, ko gre za strojno opremo. Nekatere vrhunske grafične kartice izvajajo funkcije OpenGL®, ki so neverjetno vznemirljive, vendar jih večina drugih kartic ne podpira. Z uporabo nekaj razširitev in zanašanjem na strojno pospeševanje samo za osnovne naloge je mogoče izboljšati zmogljivost OpenGL® v skoraj vseh sistemih, kar preprečuje situacije, v katerih določena linija grafičnih kartic ne more doseči sprejemljive hitrosti sličic.

Programska oprema za profiliranje je zelo pomembna tudi pri poskusu izboljšanja zmogljivosti OpenGL®. Profiler bo izmeril, koliko časa je potrebno za izvedbo vsake vrstice kode, vsake funkcije in vsake operacije v programu. To je lahko izjemno učinkovit način za prepoznavanje lokacije ozkega grla. Če določena funkcija traja dlje kot druge, jo je mogoče ciljati na optimizacijo. To lahko včasih privede do obsežnih ponovnih zapisov določenih segmentov kode, vendar na koncu lahko ustvari program, ki teče čim bolj gladko.