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 |
---|---|
|
el tamaño era negativo. |
|
Se llamó a la función mientras se GL_SELECT el modo de representación. |
|
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 |
|
Biblioteca |
|
Archivo DLL |
|