Función glSelectBuffer

La función glSelectBuffer establece un búfer para los valores del modo de selección.

Sintaxis

void WINAPI glSelectBuffer(
   GLsizei size,
   GLuint  *buffer
);

Parámetros

size

Tamaño del búfer.

buffer

Devuelve los datos de selección.

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_VALUE
el tamaño era negativo.
GL_INVALID_OPERATION
Se llamó a la función mientras se GL_SELECT el modo de representación.
GL_INVALID_OPERATION
Se llamó a la función entre una llamada a glBegin y la llamada correspondiente a glEnd.

Comentarios

La función glSelectBuffer tiene dos parámetros: buffer es un puntero a una matriz de enteros sin signo y el tamaño indica el tamaño de la matriz. El parámetro de búfer devuelve valores de la pila de nombres (consulte glInitNames, glLoadName, glPushName) cuando el modo de representación es GL_SELECT (consulte glRenderMode). La función glSelectBuffer debe emitirse antes de habilitar el modo de selección y no debe emitirse mientras el modo de representación está GL_SELECT.

Un programador usa la selección para determinar qué primitivos se dibujan en alguna región de una ventana. La región se define mediante las matrices actuales modelview y perspective.

En el modo de selección, no se generan fragmentos de píxeles a partir de la rasterización. En su lugar, si un primitivo interseca el volumen de clip definido por el frustum de visualización y los planos de recorte definidos por el usuario, este primitivo produce un acierto de selección. (Con polígonos, no se produce ningún golpe si se selecciona el polígono). Cuando se realiza un cambio en la pila de nombres o cuando se llama a glRenderMode , se copia un registro de aciertos en el búfer si se han producido visitas desde el último evento (ya sea un cambio de pila de nombres o una llamada a glRenderMode ). El registro de aciertos consta del número de nombres de la pila de nombres en el momento del evento; seguido de los valores de profundidad mínimo y máximo de todos los vértices que alcanzaron desde el evento anterior; seguido del contenido de la pila de nombres, el nombre inferior primero.

Los valores de profundidad devueltos se asignan de forma que el valor entero sin signo más grande corresponde a la profundidad de coordenadas de la ventana 1,0 y cero corresponde a la profundidad de coordenadas de ventana 0,0.

Un índice interno en el búfer se restablece a cero cada vez que se introduce el modo de selección. Cada vez que se copia un registro de aciertos en el búfer, el índice se incrementa para que apunte a la celda justo después del final del bloque de nombres que es, a la siguiente celda disponible. Si el registro de aciertos es mayor que el número de ubicaciones restantes en el búfer, se copian tantos datos como se pueden ajustar y se establece la marca de desbordamiento. Si la pila de nombres está vacía cuando se copia un registro de aciertos, ese registro consta de cero seguido de los valores de profundidad mínimo y máximo.

El modo de selección se cierra llamando a glRenderMode con un argumento distinto de GL_SELECT. Cada vez que se llama a glRenderMode mientras se GL_SELECT el modo de representación, devuelve el número de registros de aciertos copiados en el búfer, restablece la marca de desbordamiento y el puntero del búfer de selección e inicializa la pila de nombres para que esté vacía. Si se estableció el bit de desbordamiento cuando se llamó a glRenderMode , se devuelve un recuento de registros de aciertos negativos.

El contenido del búfer no está definido hasta que se llama a glRenderMode con un argumento distinto de GL_SELECT.

Los primitivos glBegin/glEnd y las llamadas a glRasterPos pueden dar lugar a visitas.

La siguiente función recupera información relacionada con glSelectBuffer:

glGet con GL_NAME_STACK_DEPTH 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

glFeedbackBuffer

glInitNames

glLoadName

glPushName

glRenderMode