Vad är OpenGL®-plockning?
OpenGL®-plockning i datorprogrammering är processen för att bestämma vilket objekt i en tredimensionell (3D) scen som finns på en given punkt på skärmen när scenen återges. Det kan också hänvisa till att hitta flera objekt på en punkt eller i en ruta. Oftast används OpenGL®-plockning för att bestämma vilket 3D-objekt på skärmen en användare försöker välja med en muspekare. Även om denna operation kanske verkar vara enkel, finns det flera finesser i hur OpenGL® gör en scen som kan göra den ganska komplex. Dessutom finns det inneboende glitches i vissa grafikkort och drivrutiner som kan göra att OpenGL®-plockningsfunktionen misslyckas och ger falska resultat.
När en användare tittar på en 3D-scen på en datorskärm är den resulterande bilden känd som en återgivning av scenen. Scenen lagras faktiskt i minnet som en samling primitiva former eller polygoner, som själva bara är samlingar av 3D-punkter inom scenens rymd. Datorn använder världskoordinater, som ibland kallas absoluta koordinater, för att utföra de flesta grundläggande funktioner som manipulerar objekt i scenen. I de flesta applikationer kan användaren manövrera utsikten över scenen till olika vinklar så att objekt kan ses i olika perspektiv. Användarens virtuella placering inom scenen kallas kameravinkeln eller kamerapositionen.
Komplexiteten i OpenGL®-plockning kommer från att bestämma platsen för musen på den tvådimensionella (2D) skärmen från ett eventuellt godtyckligt läge och vinkel i scenen, kamerapositionen. Eftersom återgivningen ur den mänskliga betraktarens perspektiv verkligen är 2D, finns det inget sätt för användaren att ge djupet med musklicket inuti scenen. OpenGL®-plockfunktionen löser detta komplexa problem på två sätt.
Den första är att istället för att utföra en serie separata beräkningar för att översätta där tittaren är abstrakt och sedan hitta ett objekt i återgivningsfönstret, gör funktionen faktiskt scenen som den gör när den normalt fungerar, med undantag för att rendering använts för val visas inte, det används bara för att beräkna korrekta positioner för objekt. Skillnaden är att istället för att göra hela området som skulle vara synligt för användaren, gör det bara området där musen är belägen. Detta innebär att alla objekt som återges är tekniskt vid den punkt där muspekaren finns.
Det andra problemet, nämligen att inte ha något sätt att ange djupet för ett valt område, löses genom att returnera alla objekt som är under muskoordinaterna i scenen. OpenGL®-plockfunktionen returnerar alla objekt i en matris tillsammans med hur långt de är borta från tittarens plats. Detta gör att ett program snabbt kan hitta det närmaste objektet om så önskas.
Ett sätt att visualisera OpenGL®-plockning är att föreställa sig en linje, ibland kallad en stråle i 3D-programmering, som rör sig från platsen för muspekaren in i scenen och bort från tittarens plats. Varje objekt som denna stråle berör läggs till i en rad objekt, tillsammans med hur långt det är från tittaren. Detta är en mycket enkel förklaring av hur en form av OpenGL®-plockning fungerar.
En annan metod för att plocka objekt i OpenGL® involverar lokalisering av ett objekt efter färg, och det kan vara betydligt snabbare. Denna metod gör scenen, men istället för att applicera belysning och textur på föremålen återges de istället med en enkel, enkel färg. Varje objekt eller grupp av objekt har sin egen distinkta färg. Scenen återges bara i minnet och visas inte, så det påverkar inte vad användaren ser. I stället för att leta efter 3D-kollisioner mellan objekt, returneras färgen i positionen för muspekaren istället och den färgen kommer att korrelera med ett specifikt objekt.