Função glSelectBuffer
A função glSelectBuffer estabelece um buffer para valores de modo de seleção.
Sintaxe
void WINAPI glSelectBuffer(
GLsizei size,
GLuint *buffer
);
Parâmetros
-
size
-
O tamanho do buffer.
-
buffer
-
Retorna os dados de seleção.
Retornar valor
Essa função não retorna um valor.
Códigos de erro
Os códigos de erro a seguir podem ser recuperados pela função glGetError .
Nome | Significado |
---|---|
|
size foi negativo. |
|
A função foi chamada enquanto o modo de renderização era GL_SELECT. |
|
A função foi chamada entre uma chamada para glBegin e a chamada correspondente para glEnd. |
Comentários
A função glSelectBuffer tem dois parâmetros: buffer é um ponteiro para uma matriz de inteiros sem sinal e o tamanho indica o tamanho da matriz. O parâmetro buffer retorna valores da pilha de nomes (consulte glInitNames, glLoadName, glPushName) quando o modo de renderização é GL_SELECT (consulte glRenderMode). A função glSelectBuffer deve ser emitida antes que o modo de seleção seja habilitado e não deve ser emitida enquanto o modo de renderização é GL_SELECT.
A seleção é usada por um programador para determinar quais primitivos são desenhados em alguma região de uma janela. A região é definida pelas matrizes de visão de modelo e perspectiva atuais.
No modo de seleção, nenhum fragmento de pixel é produzido a partir da rasterização. Em vez disso, se um primitivo intersecionar o volume de clipe definido pelo frusto de exibição e pelos planos de recorte definidos pelo usuário, esse primitivo causará uma ocorrência de seleção. (Com polígonos, nenhum hit ocorrerá se o polígono for abatido.) Quando uma alteração é feita na pilha de nomes ou quando glRenderMode é chamado, um registro de ocorrência é copiado para buffer se ocorrerem ocorrências de ocorrências desde o último evento desse tipo (uma alteração de pilha de nomes ou uma chamada glRenderMode ). O registro de ocorrência consiste no número de nomes na pilha de nomes no momento do evento; seguidos pelos valores de profundidade mínimo e máximo de todos os vértices atingidos desde o evento anterior; seguido pelo conteúdo da pilha de nomes, nome inferior primeiro.
Os valores de profundidade retornados são mapeados de modo que o maior valor inteiro sem sinal corresponda à profundidade da coordenada da janela 1.0 e zero corresponde à profundidade da coordenada da janela 0.0.
Um índice interno no buffer é redefinido para zero sempre que o modo de seleção é inserido. Sempre que um registro de ocorrência é copiado em buffer, o índice é incrementado para apontar para a célula logo após o fim do bloco de nomes que é, para a próxima célula disponível. Se o registro de ocorrência for maior que o número de locais restantes no buffer, o máximo de dados que puder caber será copiado e o sinalizador de estouro será definido. Se a pilha de nomes estiver vazia quando um registro de ocorrência for copiado, esse registro consistirá em zero seguido pelos valores de profundidade mínimo e máximo.
O modo de seleção é encerrado chamando glRenderMode com um argumento diferente de GL_SELECT. Sempre que glRenderMode é chamado enquanto o modo de renderização é GL_SELECT, ele retorna o número de registros de ocorrência copiados para buffer, redefine o sinalizador de estouro e o ponteiro do buffer de seleção e inicializa a pilha de nomes para estar vazia. Se o bit de estouro tiver sido definido quando glRenderMode foi chamado, uma contagem de registros de ocorrência negativa será retornada.
O conteúdo do buffer é indefinido até que glRenderMode seja chamado com um argumento diferente de GL_SELECT.
Os primitivos glBegin/glEnd e chamadas para glRasterPos podem resultar em ocorrências.
A função a seguir recupera informações relacionadas ao glSelectBuffer:
glGet com GL_NAME_STACK_DEPTH de argumento
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows 2000 Server [somente aplicativos da área de trabalho] |
Cabeçalho |
|
Biblioteca |
|
DLL |
|