OpenGL® valimine arvutiprogrammeerimises on protsess, mille käigus tehakse kindlaks, milline kolmemõõtmelise (3D) stseeni objekt asub pärast stseeni renderdamist teatud ekraanipunktis. See võib viidata ka mitme objekti asukoha määramisele ühes punktis või kasti sees. Kõige sagedamini kasutatakse OpenGL®-i valimist selleks, et määrata, millist 3D-objekti ekraanil kasutaja hiirekursoriga valida püüab. Kuigi see toiming võib tunduda lihtne, on OpenGL®-i stseeni renderdamisel mitmeid nüansse, mis võivad selle üsna keeruliseks muuta. Lisaks on teatud graafikakaartidel ja draiveritel sisemisi tõrkeid, mis võivad põhjustada OpenGL®-i valimisfunktsiooni ebaõnnestumise ja valede tulemuste tagastamise.
Kui kasutaja vaatab arvutimonitorilt 3D-stseeni, nimetatakse saadud pilti stseeni renderduseks. Stseen on tegelikult salvestatud mällu primitiivsete kujundite või hulknurkade kogumina, mis ise on vaid 3D-punktide kogumid stseeni ruumis. Arvuti kasutab maailma koordinaate, mida mõnikord nimetatakse absoluutseteks koordinaatideks, et täita enamikke põhifunktsioone, mis manipuleerivad stseenis olevaid objekte. Enamikus rakendustes saab kasutaja manööverdada stseeni vaadet erinevate nurkade alla, nii et objekte saab näha erinevatest vaatenurkadest. Kasutaja virtuaalset asukohta stseenis nimetatakse kaamera nurgaks või kaamera asendiks.
OpenGL®-i valimise keerukus tuleneb hiire asukoha määramisest kahemõõtmelisel (2D) ekraanil stseenis, kaamera asendis, võimalik, et suvalise asukoha ja nurga järgi. Lisaks, kuna inimesest vaataja vaatenurgast renderdamine on tõesti 2D, ei saa kasutaja kuidagi stseeni sees hiireklõpsu sügavust pakkuda. OpenGL®-i komplekteerimisfunktsioon lahendab selle keerulise probleemi kahel viisil.
Esimene on see, et selle asemel, et teostada mitmeid eraldi arvutusi, et tõlkida vaataja abstraktselt asukoht ja seejärel leida renderdusaknas objekt, renderdab funktsioon tegelikult stseeni nii, nagu see tavaliselt töötab, välja arvatud see, et renderdamisel kasutati valimiseks ei kuvata, seda kasutatakse ainult objektide õigete asukohtade arvutamiseks. Erinevus seisneb selles, et kogu kasutajale nähtava ala renderdamise asemel renderdab see ainult ala, kus hiir asub. See tähendab, et kõik renderdatud objektid asuvad tehniliselt kohas, kus asub hiirekursor.
Teine probleem, mille kohaselt ei ole võimalik näidata valitud ala sügavust, lahendatakse kõigi objektide tagastamisega, mis on stseeni hiirekoordinaatide all. OpenGL®-i valimise funktsioon tagastab kõik massiivi objektid koos nende vaataja asukohast kaugel asuvate objektidega. See võimaldab programmil soovi korral kiiresti leida lähima objekti.
Üks võimalus OpenGL®-i valimise visualiseerimiseks on kujutada joont, mida 3D-programmeerimises mõnikord nimetatakse kiireks, liikumas hiirekursori asukohast stseeni ja vaataja asukohast eemale. Iga objekt, mida see kiir puudutab, lisatakse objektide massiivi koos sellega, kui kaugel see on vaatajast. See on väga lihtne selgitus selle kohta, kuidas üks OpenGL®-i komplekteerimise vorm töötab.
Teine OpenGL®-i objektide valimise meetod hõlmab objekti asukoha määramist värvi järgi ja see võib olla palju kiirem. See meetod renderdab stseeni, kuid objektidele valgustuse ja tekstuuri rakendamise asemel renderdatakse need ühe lihtsa värviga. Igal objektil või objektide rühmal on oma erinev värv. Stseen renderdatakse ainult mälus ja seda ei kuvata, seega ei mõjuta see seda, mida kasutaja näeb. Selle asemel, et otsida objektide vahel 3D-kokkupõrkeid, tagastatakse selle asemel hiirekursori asukohas olev värv ja see värv korreleerub konkreetse objektiga.