Millised on parimad näpunäited OpenGL®-i toimimiseks?

Kui programm on kirjutatud, võib koodi ja andmefailide optimeerimine sageli võtta sama kaua kui koodi kirjutamine. See kehtib eriti siis, kui proovite parandada OpenGL®-i jõudlust. Toimivust võivad mõjutada paljud tegurid, alates tekstuurifailide suurusest ja vormingust kuni stseeni geomeetria mahuni ja lõpetades rasteriseerimisel kasutatavate renderdusvalikutega. Tegelikult võib koodi lisamine muuta programmi kiiremaks, kui selle koodi eesmärk on tuvastada ja vältida erifunktsioone, mida graafikakaart ei toeta. Head programmeerimistavad ja arusaamine levinud OpenGL®-i jõudluse kitsaskohtadest võivad aidata OpenGL®-i rakenduse kiirust ja kvaliteeti parandada.

Üks valdkond, kus OpenGL®-i jõudlust saab oluliselt parandada, on rakenduse enda andmestruktuurid. OpenGL® stseenid ja animatsioon nõuavad tavaliselt suurt hulka andmepuid, andmestruktuure ja massiive. Konteinerstruktuuride ja otsingualgoritmide kasutamine, mis kasutavad võimalikult vähe aega, täites samas rakenduse vajadused, võib kiirendada andmete töötlemist ja kuvamiseks graafikatöötlusüksusesse (GPU) teisaldamist. Abi võib olla ka sellest, kuidas OpenGL® nõuab andmete vormindamist, sest olenevalt kasutatavast keelest võib toimuda kompileerimisaja optimeerimine.

Tekstuurifailid on levinud ala, kus OpenGL®-i jõudlust saab parandada. Nende pildifailide pikslite mõõtmed peaksid olema ainult kaks, isegi kui riistvara seda ei nõua. Samuti tuleks need optimeerida pildiredaktoris, et need oleksid võimalikult väikesed. Üldiselt ei vaja animeeritud või liikuvad objektid nii üksikasjalikke tekstuure kui paigal seisvad objektid. Väikseimate võimalike tekstuuride kasutamine ilma liigset kvaliteeti ohverdamata võib kaadrisagedust oluliselt suurendada.

Üks levinud lõks, eriti uute programmeerijate või kunstnike puhul, on liigne geomeetria kasutamine. On mitmeid nippe, mis aitavad vähendada mudelis olevate hulknurkade arvu ilma detaile ohverdamata. Üks sageli tehtud viga on mudeli geomeetria kasutamine detailide esitamiseks, mida saab tekstuuripildil palju tõhusamalt näidata. Enamik mudeleid on tegelikult väga lihtsad ja keerukad funktsioonid on tõesti rakendatud löögikaartide, normaalväärtuste ja tekstuurikaardistuse abil. Lihtsustatud ja optimeeritud mudelid suurendavad OpenGL® jõudlust, vähendades arvutuste arvu, mida tuleb teha iga tipu kohta.

Mõne rakenduse puhul võib riistvara osas olla kasulik programmeerida väikseima ühisnimetaja järgi. Mõned tipptasemel graafikakaardid rakendavad OpenGL® funktsioone, mis on uskumatult põnevad, kuid mida enamik teisi kaarte ei toeta. Kasutades vähe laiendusi ja tuginedes riistvaralisele kiirendusele ainult põhitoimingute jaoks, saab OpenGL®-i jõudlust parandada peaaegu kõigis süsteemides, vältides olukordi, kus teatud rida graafikakaarte ei suuda saavutada vastuvõetavat kaadrisagedust.

Profileerimistarkvara on samuti väga oluline OpenGL®-i jõudluse parandamisel. Profileerija mõõdab, kui kaua kulub programmi iga koodirea, funktsiooni ja iga toimingu käivitamiseks. See võib olla väga tõhus viis kitsaskoha asukoha tuvastamiseks. Kui teatud funktsioon võtab teistest kauem aega, saab selle optimeerimiseks sihtida. See võib mõnikord viia teatud koodisegmentide ulatusliku ümberkirjutamiseni, kuid lõpuks võib see luua programmi, mis töötab võimalikult sujuvalt.