funzione glSelectBuffer
La funzione glSelectBuffer stabilisce un buffer per i valori della modalità di selezione.
Sintassi
void WINAPI glSelectBuffer(
GLsizei size,
GLuint *buffer
);
Parametri
-
size
-
Dimensione del buffer.
-
Buffer
-
Restituisce i dati di selezione.
Valore restituito
Questa funzione non restituisce un valore.
Codici di errore
I codici di errore seguenti possono essere recuperati dalla funzione glGetError .
Nome | Significato |
---|---|
|
le dimensioni erano negative. |
|
La funzione è stata chiamata mentre la modalità di rendering è stata GL_SELECT. |
|
La funzione è stata chiamata tra una chiamata a glBegin e la chiamata corrispondente a glEnd. |
Commenti
La funzione glSelectBuffer include due parametri: buffer è un puntatore a una matrice di interi senza segno e le dimensioni indicano le dimensioni della matrice. Il parametro buffer restituisce valori dallo stack dei nomi (vedere glInitNames, glLoadName, glPushName) quando la modalità di rendering è GL_SELECT (vedere glRenderMode). La funzione glSelectBuffer deve essere rilasciata prima dell'abilitazione della modalità di selezione e non deve essere rilasciata mentre la modalità di rendering è GL_SELECT.
La selezione viene usata da un programmatore per determinare quali primitive vengono disegnate in un'area di una finestra. L'area è definita dalle matrici di modello correnti e di prospettiva.
In modalità di selezione, nessun frammento di pixel viene prodotto dalla rasterizzazione. Se invece una primitiva interseca il volume di clip definito dalla visualizzazione dei frustum e dai piani di ritaglio definiti dall'utente, questa primitiva causa un colpo di selezione. (Con poligoni, nessun colpo si verifica se il poligono è generato. Quando viene apportata una modifica allo stack dei nomi o quando viene chiamato glRenderMode , un record di hit viene copiato nel buffer se si verificano riscontri dall'ultimo evento (una modifica dello stack dei nomi o una chiamata glRenderMode ). Il record di hit è costituito dal numero di nomi nello stack di nomi al momento dell'evento; seguito dai valori minimi e massimi di profondità di tutti i vertici che hanno raggiunto dal momento dell'evento precedente; seguito dal contenuto dello stack dei nomi, nome inferiore per primo.
I valori di profondità restituiti vengono mappati in modo che il valore intero senza segno più grande corrisponda alla profondità della coordinata della finestra 1.0 e zero corrisponde alla profondità della coordinata della finestra 0.0.
Un indice interno nel buffer viene reimpostato su zero ogni volta che viene immessa la modalità di selezione. Ogni volta che un record di hit viene copiato nel buffer, l'indice viene incrementato fino a puntare alla cella appena passata la fine del blocco di nomi, alla cella successiva disponibile. Se il record di hit è maggiore del numero di posizioni rimanenti nel buffer, quanti dati possono essere copiati e il flag di overflow viene impostato. Se lo stack dei nomi è vuoto quando viene copiato un record di hit, tale record è costituito da zero seguito dai valori minimi e massimi di profondità.
La modalità di selezione viene chiusa chiamando glRenderMode con un argomento diverso da GL_SELECT. Ogni volta che glRenderMode viene chiamato mentre la modalità di rendering è GL_SELECT, restituisce il numero di record di hit copiati nel buffer, reimposta il flag di overflow e il puntatore del buffer di selezione e inizializza lo stack dei nomi per essere vuoto. Se il bit di overflow è stato impostato quando glRenderMode è stato chiamato, viene restituito un conteggio dei record di hit negativo.
Il contenuto del buffer non viene definito finché glRenderMode viene chiamato con un argomento diverso da GL_SELECT.
Le primitive glBegin/glEnd e le chiamate a glRasterPos possono causare colpi.
La funzione seguente recupera informazioni correlate a glSelectBuffer:
glGet con argomento GL_NAME_STACK_DEPTH
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows 2000 Professional [solo app desktop] |
Server minimo supportato |
Windows 2000 Server [solo app desktop] |
Intestazione |
|
Libreria |
|
DLL |
|