Função glFeedbackBuffer
A função glFeedbackBuffer controla o modo de comentários.
Sintaxe
void WINAPI glFeedbackBuffer(
GLsizei size,
GLenum type,
GLfloat *buffer
);
Parâmetros
-
size
-
O número máximo de valores que podem ser gravados no buffer.
-
tipo
-
Uma constante simbólica que descreve as informações que serão retornadas para cada vértice. As seguintes constantes simbólicas são aceitas: GL_2D, GL_3D, GL_3D_COLOR, GL_3D_COLOR_TEXTURE e GL_4D_COLOR_TEXTURE.
-
buffer
-
Retorna os dados de comentários.
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 |
---|---|
|
type não era um valor aceito. |
|
size foi negativo. |
|
glFeedbackBuffer foi chamado enquanto o modo de renderização era GL_FEEDBACK ou glRenderMode foi chamado com argumento GL_FEEDBACK antes de glFeedbackBuffer ser chamado pelo menos uma vez. |
|
A função foi chamada entre uma chamada para glBegin e a chamada correspondente para glEnd. |
Comentários
A função glFeedbackBuffer controla os comentários. Os comentários, como seleção, são um modo OpenGL. O modo é selecionado chamando glRenderMode com GL_FEEDBACK. Quando o OpenGL está no modo de comentários, nenhum pixel é produzido pela rasterização. Em vez disso, as informações sobre primitivas que teriam sido rasterizadas são ressoadas ao aplicativo usando OpenGL.
A função glFeedbackBuffer tem três argumentos:
- buffer é um ponteiro para uma matriz de valores de ponto flutuante no qual as informações de comentários são colocadas.
- size indica o tamanho da matriz.
- type é uma constante simbólica que descreve as informações que são resguardados para cada vértice.
Você deve emitir glFeedbackBuffer antes que o modo de comentários seja habilitado (chamando glRenderMode com argumento GL_FEEDBACK). Definir GL_FEEDBACK sem estabelecer o buffer de comentários ou chamar glFeedbackBuffer enquanto o OpenGL estiver no modo de comentários é um erro.
Tire o OpenGL do modo de comentários chamando glRenderMode com um valor de parâmetro diferente de GL_FEEDBACK. Quando você faz isso enquanto o OpenGL está no modo de comentários, glRenderMode retorna o número de entradas colocadas na matriz de comentários. O valor retornado nunca excede o tamanho. Se os dados de comentários exigirem mais espaço do que o disponível no buffer, glRenderMode retornará um valor negativo.
Enquanto estiver no modo de comentários, cada primitivo que seria rasterizado gera um bloco de valores que é copiado para a matriz de comentários. Se isso fizer com que o número de entradas exceda o máximo, glFeedbackBuffer gravará parcialmente o bloco para preencher a matriz (se houver alguma sala restante) e definirá um sinalizador de estouro. Cada bloco começa com um código que indica o tipo primitivo, seguido por valores que descrevem os vértices da primitiva e os dados associados. A função glFeedbackBuffer também grava entradas para bitmaps e retângulos de pixel. Os comentários ocorrem após o abate de polígonos e a interpretação glPolygonMode dos polígonos, para que os polígonos que são abatidos não sejam retornados no buffer de comentários. Também pode ocorrer depois que polígonos com mais de três bordas são divididos em triângulos, se a implementação do OpenGL renderiza polígonos executando essa decomposição.
Você pode inserir um marcador no buffer de comentários com glPassThrough.
Veja a seguir a gramática para os blocos de valores gravados no buffer de comentários. Cada primitivo é indicado com um valor de identificação exclusivo seguido por algum número de vértices. As entradas de polígono incluem um valor inteiro que indica quantos vértices seguem. Um vértice é alimentado como um número de valores de ponto flutuante, conforme determinado por tipo. As cores são alimentadas novamente como quatro valores no modo RGBA e um valor no modo de índice de cores.
feedbackList < feedbackItem feedbackList | feedbackItem
feedbackItem < point | lineSegment | polygon | bitmap | pixelRectangle | passThru
ponto < GL_POINT_TOKEN vértice
vértice de vértice GL_LINE_TOKEN lineSegment < | GL_LINE_RESET_TOKEN vértice
polígono < GL_POLYGON_TOKEN n polySpec
vértice polySpec < polySpec | vértice de vértice
bitmap < GL_BITMAP_TOKEN vértice
pixelRectangle < GL_DRAW_PIXEL_TOKEN vértice | vértice GL_COPY_PIXEL_TOKEN
valor GL_PASS_THROUGH_TOKEN passThru <
vértice < 2d | 3d | 3dColor | 3dColorTexture | 4dColorTexture
Valor 2d <
Valor de valor 3d <
Cor do valor do valor 3dColor <
3dColorTexture < valor valor cor tex
4dColorTexture < valor valor valor cor tex
color < rgba | index
valor do valor de rgba <
valor de índice <
valor do valor tex < valor
O parâmetro value é um número de ponto flutuante e n é um inteiro de ponto flutuante que dá o número de vértices no polígono. Veja a seguir constantes simbólicas de ponto flutuante: GL_POINT_TOKEN, GL_LINE_TOKEN, GL_LINE_RESET_TOKEN, GL_POLYGON_TOKEN, GL_BITMAP_TOKEN, GL_DRAW_PIXEL_TOKEN, GL_COPY_PIXEL_TOKEN e GL_PASS_THROUGH_TOKEN. GL_LINE_RESET_TOKEN é retornado sempre que o padrão de stipple de linha é redefinido. Os dados retornados como um vértice dependem do tipo de comentários.
A tabela a seguir fornece a correspondência entre o tipo e o número de valores por vértice; k é 1 no modo de índice de cores e 4 no modo RGBA.
Type | Coordenadas | Cor | 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 |
As coordenadas de vértice de comentários estão em coordenadas de janela, exceto w, que está em coordenadas de clipe. As cores dos comentários serão iluminadas se a iluminação estiver habilitada. As coordenadas de textura de feedback serão geradas, se a geração de coordenadas de textura estiver habilitada. Eles são sempre transformados pela matriz de textura.
A função glFeedbackBuffer , quando usada em uma lista de exibição, não é compilada na lista de exibição, mas é executada imediatamente.
A função a seguir recupera informações relacionadas ao glFeedbackBuffer:
glGet com GL_RENDER_MODE 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 |
|