Cosa sta scegliendo OpenGL®?
OpenGL® La raccolta nella programmazione del computer è il processo di determinazione di quale oggetto all'interno di una scena tridimensionale (3D) si trova in un determinato punto sullo schermo una volta che la scena è resa. Può anche fare riferimento alla localizzazione di più oggetti in un punto o all'interno di una scatola. Molto spesso, la raccolta di OpenGL® viene utilizzata per determinare quale oggetto 3D sullo schermo un utente sta tentando di selezionare con un cursore del mouse. Sebbene questa operazione possa sembrare semplice, ci sono diverse sottigliezze nel modo in cui OpenGL® rende una scena che può renderla abbastanza complessa. Inoltre, ci sono problemi intrinseci in alcune schede grafiche e driver che possono causare il fallimento della funzione di raccolta OpenGL® e restituire risultati falsi.
Quando un utente sta guardando una scena 3D su un monitor del computer, l'immagine risultante è nota come rendering della scena. La scena è effettivamente immagazzinata in memoria come una raccolta di forme o poligoni primitivi, che stessi sono solo raccolte di punti 3D all'interno dello spazio delscena. Il computer utilizza coordinate mondiali, che a volte sono chiamate coordinate assolute, per svolgere le funzioni di base che manipolano gli oggetti nella scena. Nella maggior parte delle applicazioni, l'utente è in grado di manovrare la vista della scena a diversi angoli in modo che gli oggetti possano essere visti in diverse prospettive. La posizione virtuale dell'utente all'interno della scena è chiamata posizione della fotocamera o della fotocamera.
La complessità della raccolta di OpenGL® deriva dalla determinazione della posizione del mouse sullo schermo bidimensionale (2D) da una posizione e angolo forse arbitraria all'interno della scena, la posizione della telecamera. Inoltre, poiché il rendering dal punto di vista dello spettatore umano è davvero 2D, non c'è modo per l'utente di fornire la profondità del mouse Click all'interno della scena. La funzione di raccolta OpenGL® risolve questo problema complesso in due modi.
Il primo è quello, invece di perFormando una serie di calcoli separati per tradurre laddove lo spettatore è astratto e quindi trovare un oggetto nella finestra di rendering, la funzione rende effettivamente la scena come fa normalmente, con l'eccezione che il rendering utilizzato per la selezione non viene visualizzato, viene utilizzata solo per calcolare le posizioni corrette degli oggetti. La differenza è che, invece di rendere l'intera area che sarebbe visibile all'utente, rende solo l'area in cui si trova il mouse. Ciò significa che tutti gli oggetti resi sono tecnicamente nel punto in cui si trova il puntatore del mouse.
Il secondo problema, vale a dire non avere modo di indicare la profondità di un'area selezionata, viene risolto restituendo tutti gli oggetti che sono sotto le coordinate del mouse nella scena. La funzione di raccolta OpenGL® restituisce tutti gli oggetti in un array insieme a quanto sono lontani dalla posizione dello spettatore. Ciò consente a un programma di trovare rapidamente l'oggetto più vicino, se lo si desidera.
Un modo per visualizzare OLa raccolta di Pengl® è quella di immaginare una linea, a volte indicata come un raggio nella programmazione 3D, spostandosi dalla posizione del puntatore del mouse nella scena e lontano dalla posizione dello spettatore. Ogni oggetto che questo raggio tocca viene aggiunto a una matrice di oggetti, insieme a quanto è lontano dallo spettatore. Questa è una spiegazione molto semplice di come funziona una forma di raccolta OpenGL®.
Un altro metodo di raccolta degli oggetti in OpenGL® prevede la localizzazione di un oggetto per colore e può essere considerevolmente più veloce. Questo metodo rende la scena ma, invece di applicare illuminazione e consistenza agli oggetti, sono invece resi con un singolo colore semplice. Ogni oggetto o gruppo di oggetti ha il suo colore distinto. La scena è resa solo in memoria e non visualizzata, quindi ciò non influisce su ciò che l'utente vede. Invece di cercare collisioni 3D tra oggetti, viene invece restituito il colore nella posizione del cursore del mouse e quel colore è correlato a un oggetto specifico.