funzione glFeedbackBuffer

La funzione glFeedbackBuffer controlla la modalità di feedback.

Sintassi

void WINAPI glFeedbackBuffer(
   GLsizei size,
   GLenum  type,
   GLfloat *buffer
);

Parametri

size

Numero massimo di valori che è possibile scrivere nel buffer.

type

Costante simbolica che descrive le informazioni che verranno restituite per ogni vertice. Vengono accettate le costanti simboliche seguenti: GL_2D, GL_3D, GL_3D_COLOR, GL_3D_COLOR_TEXTURE e GL_4D_COLOR_TEXTURE.

Buffer

Restituisce i dati dei commenti e suggerimenti.

Valore restituito

Questa funzione non restituisce un valore.

Codici di errore

I codici di errore seguenti possono essere recuperati dalla funzione glGetError .

Nome Significato
GL_INVALID_ENUM
il tipo non è un valore accettato.
GL_INVALID_ENUM
le dimensioni erano negative.
GL_INVALID_OPERATION
glFeedbackBuffer è stato chiamato mentre la modalità di rendering è stata GL_FEEDBACK o glRenderMode è stato chiamato con argomento GL_FEEDBACK prima che glFeedbackBuffer venisse chiamato almeno una volta.
GL_INVALID_OPERATION
La funzione è stata chiamata tra una chiamata a glBegin e la chiamata corrispondente a glEnd.

Commenti

La funzione glFeedbackBuffer controlla il feedback. Il feedback, ad esempio la selezione, è una modalità OpenGL. La modalità viene selezionata chiamando glRenderMode con GL_FEEDBACK. Quando OpenGL è in modalità di feedback, non vengono generati pixel dalla rasterizzazione. Le informazioni sulle primitive che verrebbero rasterizzate vengono invece restituite all'applicazione usando OpenGL.

La funzione glFeedbackBuffer ha tre argomenti:

  • buffer è un puntatore a una matrice di valori a virgola mobile in cui vengono inserite le informazioni di feedback.
  • size indica le dimensioni della matrice.
  • type è una costante simbolica che descrive le informazioni restituite per ogni vertice.

È necessario emettere glFeedbackBuffer prima che la modalità di feedback sia abilitata (chiamando glRenderMode con l'argomento GL_FEEDBACK). L'impostazione di GL_FEEDBACK senza stabilire il buffer di feedback o chiamare glFeedbackBuffer mentre OpenGL è in modalità di feedback, è un errore.

Disconnettere OpenGL dalla modalità di feedback chiamando glRenderMode con un valore di parametro diverso da GL_FEEDBACK. Quando si esegue questa operazione mentre OpenGL è in modalità di feedback, glRenderMode restituisce il numero di voci inserite nella matrice di feedback. Il valore restituito non supera mai le dimensioni. Se i dati di feedback richiedono più spazio rispetto a quanto disponibile nel buffer, glRenderMode restituisce un valore negativo.

In modalità feedback, ogni primitiva che verrebbe rasterizzata genera un blocco di valori copiati nella matrice di feedback. In questo caso, il numero di voci supera il valore massimo, glFeedbackBuffer scrive parzialmente il blocco in modo da riempire la matrice (se è presente spazio lasciato) e imposta un flag di overflow. Ogni blocco inizia con un codice che indica il tipo primitivo, seguito da valori che descrivono i vertici della primitiva e i dati associati. La funzione glFeedbackBuffer scrive anche voci per bitmap e rettangoli pixel. Il feedback si verifica dopo l'interpretazione di poligoni e glPolygonMode dei poligoni, quindi i poligoni che vengono rilevati non vengono restituiti nel buffer di feedback. Può verificarsi anche dopo che i poligoni con più di tre archi vengono suddivisi in triangoli, se l'implementazione openGL esegue il rendering dei poligoni eseguendo questa scomposizione.

È possibile inserire un marcatore nel buffer di feedback con glPassThrough.

Di seguito è riportata la grammatica per i blocchi di valori scritti nel buffer di feedback. Ogni primitiva è indicata con un valore di identificazione univoco seguito da un certo numero di vertici. Le voci poligono includono un valore intero che indica il numero di vertici seguiti. Un vertice viene restituito come un certo numero di valori a virgola mobile, come determinato dal tipo. I colori vengono restituiti come quattro valori in modalità RGBA e un valore in modalità indice colori.

feedbackList feedbackItemList < | feedbackItem

punto feedbackItem < | lineSegment | poligono | bitmap | pixelRectangle | passThru

vertice GL_POINT_TOKEN punto <

vertice lineSegment < GL_LINE_TOKEN vertice | vertice di GL_LINE_RESET_TOKEN

polygon < GL_POLYGON_TOKEN n polySpec

vertice polySpec polySpec < | vertice

bitmap < GL_BITMAP_TOKEN vertice

pixelRectangle < GL_DRAW_PIXEL_TOKEN vertice | GL_COPY_PIXEL_TOKEN vertice

passThru < GL_PASS_THROUGH_TOKEN value

vertex < 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture

Valore 2d <

Valore valore 3d <

Colore valore valore 3dColor <

3dColorTexture < value value value color tex

4dColorTexture < valore valore valore valore tex

color < rgba | index

valore valore rgba <

valore di indice <

Valore valore valore tex <

Il parametro value è un numero a virgola mobile e n è un numero intero a virgola mobile che fornisce il numero di vertici nel poligono. Di seguito sono riportate costanti a virgola mobile simboliche: GL_POINT_TOKEN, GL_LINE_TOKEN, GL_LINE_RESET_TOKEN, GL_POLYGON_TOKEN, GL_BITMAP_TOKEN, GL_DRAW_PIXEL_TOKEN, GL_COPY_PIXEL_TOKEN e GL_PASS_THROUGH_TOKEN. GL_LINE_RESET_TOKEN viene restituito ogni volta che viene reimpostato il modello di stipple della linea. I dati restituiti come vertice dipendono dal tipo di feedback.

La tabella seguente fornisce la corrispondenza tra il tipo e il numero di valori per vertice; k è 1 in modalità indice colori e 4 in modalità RGBA.

Tipo Coordinate Color Trama Numero totale di valori
GL_2D x, y 2
GL_3D x, y, z 3
GL_3D_COLOR x, y, z K 3 + k
GL_3D_COLOR_TEXTURE x, y, z, K 4 7 + k
GL_4D_COLOR_TEXTURE x, y, z, w K 4 8 + k

Le coordinate dei vertici di feedback si trovano nelle coordinate della finestra, ad eccezione di w, che si trova nelle coordinate di ritaglio. I colori di feedback vengono illuminati, se l'illuminazione è abilitata. Le coordinate delle trame di feedback vengono generate, se la generazione delle coordinate della trama è abilitata. Vengono sempre trasformati dalla matrice di trama.

La funzione glFeedbackBuffer , se utilizzata in un elenco di visualizzazione, non viene compilata nell'elenco di visualizzazione, ma viene eseguita immediatamente.

La funzione seguente recupera le informazioni correlate a glFeedbackBuffer:

glGet con argomento GL_RENDER_MODE

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Gl.h
Libreria
Opengl32.lib
DLL
Opengl32.dll

Vedi anche

glBegin

glEnd

glGet

glLineStipple

glPassThrough

glPolygonMode

glRenderMode

glSelectBuffer