OpenGL®-poiminta tietokoneohjelmoinnissa on prosessi, jolla määritetään, mikä objekti kolmiulotteisessa (3D) näkymässä sijaitsee tietyssä näytön kohdassa, kun kohtaus on muodostettu. Se voi myös viitata useiden kohteiden paikantamiseen pisteeseen tai laatikon sisälle. Useimmiten OpenGL® -keräystä käytetään määrittämään, mitä 3D -kohdetta näytöllä käyttäjä yrittää valita hiiren kohdistimella. Vaikka tämä toiminto saattaa näyttää yksinkertaiselta, OpenGL® tekee kohtauksesta useita hienovaraisuuksia, jotka voivat tehdä siitä melko monimutkaisen. Lisäksi tietyissä näytönohjaimissa ja ohjaimissa on luontaisia häiriöitä, jotka voivat aiheuttaa OpenGL® -poimintatoiminnon epäonnistumisen ja palauttaa vääriä tuloksia.
Kun käyttäjä katsoo 3D -näkymää tietokoneen näytöllä, tuloksena oleva kuva tunnetaan kohtauksen renderöinnistä. Kohtaus on itse asiassa tallennettu muistiin kokoelmana primitiivisiä muotoja tai monikulmioita, jotka itse ovat vain kokoelmia 3D -pisteistä näyttämön sisällä. Tietokone käyttää maailmankoordinaatteja, joita joskus kutsutaan absoluuttisiksi koordinaateiksi, suorittamaan useimmat perustoiminnot, jotka käsittelevät kohtauksen kohteita. Useimmissa sovelluksissa käyttäjä voi ohjata näkymää eri kulmista, jotta esineet voidaan nähdä eri näkökulmista. Käyttäjän virtuaalista sijaintia kohtauksessa kutsutaan kamerakulmaksi tai kameran asentoksi.
OpenGL®-poiminnan monimutkaisuus johtuu hiiren sijainnin määrittämisestä kaksiulotteisessa (2D) näytössä mahdollisesti mielivaltaisesta paikasta ja kuvakulmasta, kameran sijainnista. Lisäksi koska renderointi ihmisen katsojan näkökulmasta on todella 2D, käyttäjä ei voi mitenkään antaa syvyyttä hiiren napsautuksesta kohtauksen sisällä. OpenGL® -keräilytoiminto ratkaisee tämän monimutkaisen ongelman kahdella tavalla.
Ensimmäinen on se, että sen sijaan, että suoritettaisiin sarja erillisiä laskelmia käännettäväksi, missä katsoja on abstraktisti, ja löydettäisiin sitten objekti renderointiikkunasta, toiminto tosiasiallisesti tekee kohtauksen normaalisti toimiessaan, paitsi että käytetty renderointi valintaa ei näytetä, sitä käytetään vain objektien oikeiden sijaintien laskemiseen. Ero on siinä, että sen sijaan, että se näyttäisi koko alueen, joka olisi käyttäjän nähtävissä, se renderoi vain alueen, jolla hiiri sijaitsee. Tämä tarkoittaa, että kaikki renderöidyt objektit ovat teknisesti kohdassa, jossa hiiren osoitin sijaitsee.
Toinen ongelma, nimittäin se, ettei valitun alueen syvyyttä voida mitenkään ilmaista, ratkaistaan palauttamalla kaikki kohteet, jotka ovat kohtauksen hiiren koordinaattien alla. OpenGL® -poimintoiminto palauttaa taulukon kaikki objektit ja sen, kuinka kaukana ne ovat katsojan sijainnista. Tämä mahdollistaa ohjelman löytää nopeasti lähimmän objektin haluttaessa.
Yksi tapa visualisoida OpenGL® -poiminta on kuvitella viiva, jota 3D -ohjelmoinnissa kutsutaan joskus sädeksi ja joka siirtyy hiiren osoittimen paikasta kohtaukseen ja pois katsojan sijainnista. Jokainen kohde, johon tämä säde koskettaa, lisätään joukkoon esineitä ja sen etäisyys katsojasta. Tämä on hyvin yksinkertainen selitys siitä, kuinka yksi OpenGL® -keräilymuoto toimii.
Toinen tapa valita objekteja OpenGL®: ssä sisältää kohteen paikantamisen värin mukaan, ja se voi olla huomattavasti nopeampi. Tämä menetelmä renderoi näkymän, mutta sen sijaan, että kohteisiin valaistusta ja tekstuuria, ne renderöidään yhdellä yksinkertaisella värillä. Jokaisella esineellä tai esineiden ryhmällä on oma värinsä. Kohtaus näytetään vain muistissa eikä sitä näytetä, joten tämä ei vaikuta käyttäjän näkemään. Sen sijaan, että etsitään 3D -törmäyksiä esineiden välillä, hiiren kohdistimen kohdalla oleva väri palautetaan, ja tämä väri korreloi tiettyyn kohteeseen.