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
GL_INVALID_ENUM
type no era un valor aceptado.
GL_INVALID_ENUM
el tamaño era negativo.
GL_INVALID_OPERATION
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.
GL_INVALID_OPERATION
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
Gl.h
Biblioteca
Opengl32.lib
Archivo DLL
Opengl32.dll

Consulte también

glBegin

glEnd

glGet

glLineStipple

glPassThrough

glPolygonMode

glRenderMode

glSelectBuffer