Função glMap2d

As funções glMap2d e glMap2f definem um avaliador bidimensional.

Sintaxe

void WINAPI glMap2d(
         GLenum   target,
         GLdouble u1,
         GLdouble u2,
         GLint    ustride,
         GLint    uorder,
         GLdouble v1,
         GLdouble v2,
         GLint    vstride,
         GLint    vorder,
   const GLdouble *points
);

Parâmetros

destino

O tipo de valores gerados pelo avaliador. As seguintes constantes simbólicas são aceitas.

Valor Significado
GL_MAP2_VERTEX_3
Cada ponto de controle tem três valores de ponto flutuante que representam x, y e z. Os comandos glVertex3 internos são gerados quando o mapa é avaliado.
GL_MAP2_VERTEX_4
Cada ponto de controle tem quatro valores de ponto flutuante que representam x, y, z e w. Comandos glVertex4 internos são gerados quando o mapa é avaliado.
GL_MAP2_INDEX
Cada ponto de controle é um único valor de ponto flutuante que representa um índice de cores. Comandos glIndex internos são gerados quando o mapa é avaliado. No entanto, o índice atual não é atualizado com o valor desses comandos glIndex .
GL_MAP2_COLOR_4
Cada ponto de controle tem quatro valores de ponto flutuante que representam vermelho, verde, azul e alfa. Comandos glColor4 internos são gerados quando o mapa é avaliado. No entanto, a cor atual não é atualizada com o valor desses comandos glColor4 .
GL_MAP2_NORMAL
Cada ponto de controle tem três valores de ponto flutuante que representam os componentes x, y e z de um vetor normal. Comandos glNormal internos são gerados quando o mapa é avaliado. No entanto, o normal atual não é atualizado com o valor desses comandos glNormal .
GL_MAP2_TEXTURE_COORD_1
Cada ponto de controle é um único valor de ponto flutuante que representa a coordenada de textura s . Os comandos glTexCoord1 internos são gerados quando o mapa é avaliado. No entanto, as coordenadas de textura atuais não são atualizadas com o valor desses comandos glTexCoord .
GL_MAP2_TEXTURE_COORD_2
Cada ponto de controle tem dois valores de ponto flutuante que representam as coordenadas de textura s e t . Os comandos glTexCoord2 internos são gerados quando o mapa é avaliado. No entanto, as coordenadas de textura atuais não são atualizadas com o valor desses comandos glTexCoord .
GL_MAP2_TEXTURE_COORD_3
Cada ponto de controle tem três valores de ponto flutuante que representam as coordenadas de textura s, t e r . Os comandos glTexCoord3 internos são gerados quando o mapa é avaliado. No entanto, as coordenadas de textura atuais não são atualizadas com o valor desses comandos glTexCoord .
GL_MAP2_TEXTURE_COORD_4
Cada ponto de controle tem quatro valores de ponto flutuante que representam as coordenadas de textura s, t, r e q . Comandos glTexCoord4 internos são gerados quando o mapa é avaliado. No entanto, as coordenadas de textura atuais não são atualizadas com o valor desses comandos glTexCoord .

u1

Um mapeamento linear de u, conforme apresentado a glEvalCoord2, para u^, uma das duas variáveis avaliadas pelas equações especificadas por esse comando.

u2

Um mapeamento linear de u, conforme apresentado a glEvalCoord2, para u^, uma das duas variáveis avaliadas pelas equações especificadas por esse comando.

ustride

O número de floats ou doubles entre o início do ponto de controle Rij e o início do ponto de controle R(i\ +1\ )\ j, em que i e j são os índices do ponto de controle u e v , respectivamente. Isso permite que os pontos de controle sejam inseridos em estruturas de dados arbitrárias. A única restrição é que os valores de um ponto de controle específico devem ocupar locais de memória contíguos.

uorder

A dimensão da matriz do ponto de controle no eixo u. Deve ser positivo.

v1

Um mapeamento linear de v, conforme apresentado a glEvalCoord2, para v^, uma das duas variáveis avaliadas pelas equações especificadas por esse comando.

v2

Um mapeamento linear de v, conforme apresentado a glEvalCoord2, para v^, uma das duas variáveis avaliadas pelas equações especificadas por esse comando.

vstride

O número de floats ou doubles entre o início do ponto de controle Rij e o início do ponto de controle Ri(j\ +1\ ), em que i e j são os índices de ponto de controle u e v , respectivamente. Isso permite que os pontos de controle sejam inseridos em estruturas de dados arbitrárias. A única restrição é que os valores de um ponto de controle específico devem ocupar locais de memória contíguos.

vorder

A dimensão da matriz do ponto de controle no eixo v. Deve ser positivo.

points

Um ponteiro para a matriz de pontos de controle.

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
GL_INVALID_ENUM
target não era um valor aceito.
GL_INVALID_VALUE
u1 era igual a u2 ou v1 era igual a v2.
GL_INVALID_VALUE
Ustride ou vstride era menor que o número de valores em um ponto de controle.
GL_INVALID_VALUE
Uorder ou vorder era menor que um ou GL_MAX_EVAL_ORDER.
GL_INVALID_OPERATION
A função foi chamada entre uma chamada para glBegin e a chamada correspondente para glEnd.

Comentários

Os avaliadores fornecem uma maneira de usar o mapeamento polinomial polinomial ou racional para produzir vértices, normais, coordenadas de textura e cores. Os valores produzidos por um avaliador são enviados para outros estágios do processamento OpenGL, assim como se tivessem sido apresentados usando os comandos glVertex, glNormal, glTexCoord e glColor , exceto que os valores gerados não atualizam o normal atual, as coordenadas de textura ou a cor.

Todas as splines polinomial ou racional polinomial de qualquer grau (até o grau máximo suportado pela implementação do OpenGL) podem ser descritas usando avaliadores. Isso inclui quase todas as superfícies usadas em elementos gráficos de computação, incluindo superfícies B-spline, superfícies NURBS, superfícies de Bézier e assim por diante.

Os avaliadores definem superfícies com base em polinomiais bivariados de Bernstein. Definir p (u^,v^) como

Equação mostrando a definição de p ().

onde Rij é um ponto de controle, () é o polinomial ibernstein de grau

n (uorder = n + 1)

Equação mostrando o polinomial bernstein do grau n.

e () é o polinomial jth Bernstein de grau m (vorder = m + 1)

Equação mostrando o polinomial bernstein de grau m.

Lembre-se de que

Equações mostrando equivalência como 1.

A função glMap2 é usada para definir a base e especificar que tipo de valores são produzidos. Depois de definido, um mapa pode ser habilitado e desabilitado chamando glEnable e glDisable com o nome do mapa, um dos nove valores predefinidos para o destino, descrito acima. Quando glEvalCoord2 apresenta valores u e v, os polinômios bivariados de Bernstein são avaliados usando u^ e v^, em que

Equação mostrando a definição de você^.

e

Equação mostrando a definição de v^.

O parâmetro de destino é uma constante simbólica que indica que tipo de pontos de controle são fornecidos em pontos e qual saída é gerada quando o mapa é avaliado.

Os parâmetros ustride, uorder, vstride, vorder e points definem o endereçamento de matriz para acessar os pontos de controle. O parâmetro points é o local do primeiro ponto de controle, que ocupa um, dois, três ou quatro locais de memória contíguos, dependendo de qual mapa está sendo definido. Há pontos de controle uorder x vorder na matriz. O parâmetro ustride informa quantos locais float ou double são ignorados para avançar o ponteiro de memória interna do ponto de controle Rij para o ponto de controle R(\ i+1\ )j. O parâmetro vstride informa quantos locais float ou double são ignorados para avançar o ponteiro de memória interna do ponto de controle Rij para o ponto de controle Ri(j\ +1\ ).

Como é o caso de todos os comandos OpenGL que aceitam ponteiros para dados, é como se o conteúdo dos pontos fosse copiado pelo glMap2 antes de ser retornado. As alterações no conteúdo dos pontos não têm efeito depois que glMap2 é chamado.

As seguintes funções recuperam informações relacionadas ao glMap2:

glGet com GL_MAX_EVAL_ORDER de argumento

glGetMap

glIsEnabled com argumento GL_MAP2_VERTEX_3

glIsEnabled com argumento GL_MAP2_VERTEX_4

glIsEnabled com GL_MAP2_INDEX de argumento

glIsEnabled com argumento GL_MAP2_COLOR_4

glIsEnabled com GL_MAP2_NORMAL de argumento

glIsEnabled com argumento GL_MAP2_TEXTURE_COORD_1

glIsEnabled com argumento GL_MAP2_TEXTURE_COORD_2

glIsEnabled com argumento GL_MAP2_TEXTURE_COORD_3

glIsEnabled com argumento GL_MAP2_TEXTURE_COORD_4

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
Gl.h
Biblioteca
Opengl32.lib
DLL
Opengl32.dll

Confira também

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

glEvalPoint

glMap1

glMapGrid

glNormal

glTexCoord

glVertex