Kokie yra geriausi OpenGL® našumo patarimai?

Kai programa parašoma, kodo ir duomenų failų optimizavimas dažnai gali užtrukti tiek pat laiko, kiek ir kodo parašymas. Tai ypač aktualu, kai bandoma pagerinti OpenGL® našumą. Daugelis veiksnių gali turėti įtakos našumui, pradedant tekstūros failų dydžiu ir formatu, baigiant geometrijos kiekiu scenoje ir baigiant rastrizacijos metu naudojamomis atvaizdavimo parinktimis. Iš tikrųjų pridėjus kodą programa gali veikti greičiau, jei šis kodas skirtas aptikti ir išvengti specialių funkcijų, kurių nepalaiko vaizdo plokštė. Gera programavimo praktika ir bendrų OpenGL® našumo kliūčių supratimas gali labai padėti pagerinti OpenGL® programos greitį ir kokybę.

Viena sritis, kurioje galima pasiekti didelių OpenGL® našumo patobulinimų, yra pačios programos duomenų struktūros. OpenGL® scenoms ir animacijai paprastai reikia daug duomenų medžių, duomenų struktūrų ir masyvų. Naudojant konteinerių struktūras ir paieškos algoritmus, kurie sunaudoja mažiausią įmanomą laiką ir vis tiek tenkina programos poreikius, galima pagreitinti duomenų apdorojimą ir perkėlimą į grafikos apdorojimo bloką (GPU) rodyti. Supratimas, kaip OpenGL® reikalauja formatuoti duomenis, taip pat gali padėti, nes, atsižvelgiant į naudojamą kalbą, gali įvykti kai kurie kompiliavimo laiko optimizavimai.

Tekstūros failai yra įprasta sritis, kurioje galima pagerinti OpenGL® našumą. Šių vaizdo failų pikselių matmenys turi būti tik dviejų galių, net jei aparatinė įranga to nereikalauja. Jie taip pat turėtų būti optimizuoti vaizdų rengyklėje, kad būtų kuo mažesni. Paprastai animuotiems ar judantiems objektams nereikia tokių detalių tekstūrų kaip objektams, kurie lieka nejudantys. Naudojant kuo mažesnes tekstūras neprarandant per daug kokybės, kadrų dažnis gali labai padidėti.

Viena dažna klaida, ypač naujiems programuotojams ar menininkams, yra per daug geometrijos. Yra keletas gudrybių, kurios gali padėti sumažinti modelio daugiakampių skaičių neprarandant detalių. Viena dažnai daroma klaida yra naudoti modelio geometriją, kad būtų pavaizduotos detalės, kurios gali būti daug efektyviau parodytos tekstūros vaizde. Dauguma modelių iš tikrųjų yra labai paprasti, o sudėtingos funkcijos iš tikrųjų įgyvendinamos naudojant nelygumus, normalius modelius ir tekstūros atvaizdavimą. Supaprastinti, optimizuoti modeliai padidins OpenGL® našumą, nes sumažins skaičiavimų, kuriuos reikia atlikti kiekvienoje viršūnėje, skaičių.

Kai kurioms programoms gali būti naudinga užprogramuoti mažiausią bendrą vardiklį, kai kalbama apie aparatinę įrangą. Kai kuriose aukščiausios klasės vaizdo plokštėse įdiegtos OpenGL® funkcijos, kurios yra neįtikėtinai įdomios, tačiau nepalaikomos daugelyje kitų plokščių. Naudojant keletą plėtinių ir pasikliaujant aparatūros spartinimu tik pagrindinėms užduotims, OpenGL® našumas gali būti pagerintas beveik visose sistemose, išvengiant situacijų, kai tam tikra vaizdo plokščių linija negali pasiekti priimtino kadrų dažnio.

Profiliavimo programinė įranga taip pat labai svarbi bandant pagerinti OpenGL® našumą. Profiliuotojas įvertins, kiek laiko užtrunka kiekvienai kodo eilutei, kiekvienai funkcijai ir kiekvienai programos operacijai vykdyti. Tai gali būti neįtikėtinai efektyvus būdas nustatyti kliūties vietą. Jei tam tikra funkcija užtrunka ilgiau nei kitos, ją galima optimizuoti. Dėl to kartais gali būti perrašomi tam tikri kodo segmentai, bet galiausiai gali būti sukurta programa, kuri veiktų kuo sklandžiau.