GlFeedbackBuffer (función)
La función glFeedbackBuffer controla el modo de comentarios.
Sintaxis
void WINAPI glFeedbackBuffer(
GLsizei size,
GLenum type,
GLfloat *buffer
);
Parámetros
-
size
-
Número máximo de valores que se pueden escribir en el búfer.
-
type
-
Constante simbólica que describe la información que se devolverá para cada vértice. Se aceptan las siguientes constantes simbólicas: GL_2D, GL_3D, GL_3D_COLOR, GL_3D_COLOR_TEXTURE y GL_4D_COLOR_TEXTURE.
-
buffer
-
Devuelve los datos de comentarios.
Valor devuelto
Esta función no devuelve ningún valor.
Códigos de error
La función glGetError puede recuperar los siguientes códigos de error.
Nombre | Significado |
---|---|
|
type no era un valor aceptado. |
|
el tamaño era negativo. |
|
Se llamó a glFeedbackBuffer mientras se GL_FEEDBACK el modo de representación, o se llamó a glRenderMode con el argumento GL_FEEDBACK antes de llamar a glFeedbackBuffer al menos una vez. |
|
Se llamó a la función entre una llamada a glBegin y la llamada correspondiente a glEnd. |
Comentarios
La función glFeedbackBuffer controla los comentarios. Los comentarios, como la selección, son un modo OpenGL. El modo se selecciona llamando a glRenderMode con GL_FEEDBACK. Cuando OpenGL está en modo de comentarios, no se genera ningún píxel por rasterización. En su lugar, la información sobre primitivos que se habrían rasterizado se devuelve a la aplicación mediante OpenGL.
La función glFeedbackBuffer tiene tres argumentos:
- buffer es un puntero a una matriz de valores de punto flotante en el que se coloca la información de comentarios.
- size indica el tamaño de la matriz.
- type es una constante simbólica que describe la información que se devuelve para cada vértice.
Debe emitir glFeedbackBuffer antes de habilitar el modo de comentarios (llamando a glRenderMode con el argumento GL_FEEDBACK). Establecer GL_FEEDBACK sin establecer el búfer de comentarios o llamar a glFeedbackBuffer mientras OpenGL está en modo de comentarios, es un error.
Para quitar el modo de comentarios de OpenGL, llame a glRenderMode con un valor de parámetro distinto de GL_FEEDBACK. Al hacerlo mientras OpenGL está en modo de comentarios, glRenderMode devuelve el número de entradas colocadas en la matriz de comentarios. El valor devuelto nunca supera el tamaño. Si los datos de comentarios requerían más espacio de lo que estaba disponible en el búfer, glRenderMode devuelve un valor negativo.
Aunque en el modo de comentarios, cada primitivo que se rasterizaría genera un bloque de valores que se copia en la matriz de comentarios. Si lo hace, el número de entradas superaría el máximo, glFeedbackBuffer escribe parcialmente el bloque para rellenar la matriz (si hay alguna sala a la izquierda) y establece una marca de desbordamiento. Cada bloque comienza con un código que indica el tipo primitivo, seguido de valores que describen los vértices del primitivo y los datos asociados. La función glFeedbackBuffer también escribe entradas para mapas de bits y rectángulos de píxeles. Los comentarios se producen después de que se haya realizado la selección de polígonos y la interpretación glPolygonMode de los polígonos, por lo que los polígonos que se seleccionan no se devuelven en el búfer de comentarios. También puede ocurrir después de que los polígonos con más de tres bordes se divida en triángulos, si la implementación de OpenGL representa polígonos realizando esta descomposición.
Puede insertar un marcador en el búfer de comentarios con glPassThrough.
A continuación se muestra la gramática de los bloques de valores escritos en el búfer de comentarios. Cada primitivo se indica con un valor de identificación único seguido de algún número de vértices. Las entradas de polígono incluyen un valor entero que indica cuántos vértices siguen. Un vértice se devuelve como cierto número de valores de punto flotante, según lo determinado por el tipo. Los colores se devuelven como cuatro valores en el modo RGBA y un valor en modo de índice de color.
feedbackList < feedbackItem feedbackList | feedbackItem
punto feedbackItem < | lineSegment | polygon | bitmap | pixelRectangle | passThru
vértice de punto < GL_POINT_TOKEN
lineSegment < GL_LINE_TOKEN vértice de vértice | vértice GL_LINE_RESET_TOKEN vértice
polygon < GL_POLYGON_TOKEN n polySpec
vértice polySpec polySpec < | vértice de vértice de vértice
mapa de < bits GL_BITMAP_TOKEN vértice
pixelRectangle < GL_DRAW_PIXEL_TOKEN vértice | GL_COPY_PIXEL_TOKEN vértice
passThru < GL_PASS_THROUGH_TOKEN valor
vértice < 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture
Valor de 2d <
Valor de valor 3d <
Color del valor del valor 3dColor <
3dColorTexture < valor de valor tex tex
4dColorTexture < valor value value tex tex
color < rgba | index
valor de valor rgba < value value
valor de índice <
Valor de valor de tex <
El parámetro value es un número de punto flotante y n es un entero de punto flotante que proporciona el número de vértices en el polígono. Las siguientes son constantes simbólicas de punto flotante: GL_POINT_TOKEN, GL_LINE_TOKEN, GL_LINE_RESET_TOKEN, GL_POLYGON_TOKEN, GL_BITMAP_TOKEN, GL_DRAW_PIXEL_TOKEN, GL_COPY_PIXEL_TOKEN y GL_PASS_THROUGH_TOKEN. GL_LINE_RESET_TOKEN se devuelve cada vez que se restablece el patrón de esptippla de línea. Los datos devueltos como vértices dependen del tipo de comentarios.
En la tabla siguiente se proporciona la correspondencia entre el tipo y el número de valores por vértice; k es 1 en modo de índice de color y 4 en modo RGBA.
Tipo | Coordenadas | Color | Textura | Número total de valores |
---|---|---|---|---|
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 |
Las coordenadas de vértices de comentarios están en coordenadas de ventana, excepto w, que se encuentran en coordenadas de recorte. Los colores de comentarios se iluminan, si la iluminación está habilitada. Se generan coordenadas de textura de comentarios, si la generación de coordenadas de textura está habilitada. Siempre se transforman mediante la matriz de texturas.
La función glFeedbackBuffer , cuando se usa en una lista de visualización, no se compila en la lista de visualización, sino que se ejecuta inmediatamente.
La siguiente función recupera información relacionada con glFeedbackBuffer:
glGet con GL_RENDER_MODE de argumentos
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado |
|
Biblioteca |
|
Archivo DLL |
|