funzione glMap2f

Le funzioni glMap2d e glMap2f definiscono un analizzatore bidimensionale.

Sintassi

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

Parametri

target

Tipo di valori generati dall'analizzatore. Vengono accettate le costanti simboliche seguenti.

Valore Significato
GL_MAP2_VERTEX_3
Ogni punto di controllo è costituito da tre valori a virgola mobile che rappresentano x, y e z. I comandi glVertex3 interni vengono generati quando viene valutata la mappa.
GL_MAP2_VERTEX_4
Ogni punto di controllo è costituito da quattro valori a virgola mobile che rappresentano x, y, z e w. I comandi interni glVertex4 vengono generati quando viene valutata la mappa.
GL_MAP2_INDEX
Ogni punto di controllo è un singolo valore a virgola mobile che rappresenta un indice di colore. I comandi glIndex interni vengono generati quando viene valutata la mappa. L'indice corrente non viene aggiornato con il valore di questi comandi glIndex , tuttavia.
GL_MAP2_COLOR_4
Ogni punto di controllo è costituito da quattro valori a virgola mobile che rappresentano rosso, verde, blu e alfa. I comandi glColor4 interni vengono generati quando viene valutata la mappa. Il colore corrente non viene aggiornato con il valore di questi comandi glColor4 , tuttavia.
GL_MAP2_NORMAL
Ogni punto di controllo è costituito da tre valori a virgola mobile che rappresentano i componenti x, y e z di un vettore normale. I comandi glNormal interni vengono generati quando viene valutata la mappa. La normale corrente non viene aggiornata con il valore di questi comandi glNormal , tuttavia.
GL_MAP2_TEXTURE_COORD_1
Ogni punto di controllo è un singolo valore a virgola mobile che rappresenta la coordinata della trama. I comandi interni glTexCoord1 vengono generati quando viene valutata la mappa. Le coordinate correnti della trama non vengono aggiornate con il valore di questi comandi glTexCoord , tuttavia.
GL_MAP2_TEXTURE_COORD_2
Ogni punto di controllo è costituito da due valori a virgola mobile che rappresentano le coordinate della trama s e t . I comandi interni glTexCoord2 vengono generati quando viene valutata la mappa. Le coordinate correnti della trama non vengono aggiornate con il valore di questi comandi glTexCoord , tuttavia.
GL_MAP2_TEXTURE_COORD_3
Ogni punto di controllo è costituito da tre valori a virgola mobile che rappresentano le coordinate della trama s, t e r . I comandi glTexCoord3 interni vengono generati quando la mappa viene valutata. Le coordinate correnti della trama non vengono aggiornate con il valore di questi comandi glTexCoord , tuttavia.
GL_MAP2_TEXTURE_COORD_4
Ogni punto di controllo è costituito da quattro valori a virgola mobile che rappresentano le coordinate della trama s, t, r e q . I comandi interni glTexCoord4 vengono generati quando viene valutata la mappa. Le coordinate correnti della trama non vengono aggiornate con il valore di questi comandi glTexCoord , tuttavia.

u1

Mapping lineare di u, come presentato a glEvalCoord2, a u^, una delle due variabili valutate dalle equazioni specificate da questo comando.

u2

Mapping lineare di u, come presentato a glEvalCoord2, a u^, una delle due variabili valutate dalle equazioni specificate da questo comando.

ustride

Numero di valori float o double tra l'inizio del punto di controllo Rij e l'inizio del punto di controllo R(i\ +1\ )\ )\ j, dove i e j sono rispettivamente gli indici dei punti di controllo u e v . In questo modo i punti di controllo possono essere incorporati in strutture di dati arbitrarie. L'unico vincolo è che i valori per un particolare punto di controllo devono occupare posizioni di memoria contigue.

uorder

Dimensione della matrice di punti di controllo nell'asse u. Deve essere positivo.

v1

Mapping lineare di v, come presentato a glEvalCoord2, a v^, una delle due variabili valutate dalle equazioni specificate da questo comando.

v2

Mapping lineare di v, come presentato a glEvalCoord2, a v^, una delle due variabili valutate dalle equazioni specificate da questo comando.

vstride

Numero di valori float o double tra l'inizio del punto di controllo Rij e l'inizio del punto di controllo Ri(j\ +1\ ), dove i e j sono rispettivamente gli indici dei punti di controllo u e v . In questo modo i punti di controllo possono essere incorporati in strutture di dati arbitrarie. L'unico vincolo è che i valori per un particolare punto di controllo devono occupare posizioni di memoria contigue.

vorder

Dimensione della matrice di punti di controllo nell'asse v. Deve essere positivo.

punti

Puntatore alla matrice di punti di controllo.

Valore restituito

Questa funzione non restituisce un valore.

Codici di errore

I codici di errore seguenti possono essere recuperati dalla funzione glGetError .

Nome Significato
GL_INVALID_ENUM
target non è un valore accettato.
GL_INVALID_VALUE
u1 è uguale a u2 o v1 è uguale a v2.
GL_INVALID_VALUE
ustride o vstride è minore del numero di valori in un punto di controllo.
GL_INVALID_VALUE
Uorder o vorder era minore di uno o GL_MAX_EVAL_ORDER.
GL_INVALID_OPERATION
La funzione è stata chiamata tra una chiamata a glBegin e la chiamata corrispondente a glEnd.

Commenti

Gli analizzatori consentono di usare il mapping polinomiale o razionale polinomiale per produrre vertici, normali, coordinate di trama e colori. I valori prodotti da un analizzatore vengono inviati a ulteriori fasi dell'elaborazione OpenGL esattamente come se fossero stati presentati usando i comandi glVertex, glNormal, glTexCoord e glColor , ad eccezione del fatto che i valori generati non aggiornano la normale corrente, le coordinate di trama o il colore correnti.

Tutte le spline polinomiali o razionali polinomiali di qualsiasi grado (fino al massimo grado supportato dall'implementazione openGL) possono essere descritte usando gli analizzatori. Questi includono quasi tutte le superfici usate nella grafica informatica, tra cui superfici B-spline, superfici NURBS, superfici Bezier e così via.

Gli analizzatori definiscono le superfici in base ai polinomiali di Bernstein bivariati. Definire p (u^,v^) come

Equazione che mostra la definizione di p ().

dove Rij è un punto di controllo, () è il polinomio dibernstein

n (uorder = n + 1)

Equazione che mostra il polinomio bernstein di grado n.

e () è il polinomio jBernstein di grado m (vorder = m + 1)

Equazione che mostra il polinomio bernstein di grado m.

Ricordare che

Equazioni che mostrano l'equivalenza a 1.

La funzione glMap2 viene usata per definire la base e per specificare il tipo di valori prodotti. Dopo aver definito, una mappa può essere abilitata e disabilitata chiamando glEnable e glDisable con il nome della mappa, uno dei nove valori predefiniti per la destinazione, descritto in precedenza. Quando glEvalCoord2 presenta valori u e v, i polinomiali di Bernstein bivariati vengono valutati usando u^ e v^, dove

Equazione che mostra la definizione di you^.

e

Equazione che mostra la definizione di v^.

Il parametro di destinazione è una costante simbolica che indica il tipo di punti di controllo forniti in punti e l'output generato quando viene valutata la mappa.

I parametri ustride, uorder, vstride, vorder e punti definiscono l'indirizzamento della matrice per accedere ai punti di controllo. Il parametro punti è la posizione del primo punto di controllo, che occupa uno, due, tre o quattro percorsi di memoria contigui, a seconda della mappa definita. Nella matrice sono presenti punti di controllo uorder x vorder . Il parametro ustride indica il numero di posizioni float o doppie ignorate per avanzare il puntatore di memoria interno dal punto di controllo Rij al punto di controllo R(\ i+1\ )j. Il parametro vstride indica il numero di posizioni float o doppie ignorate per avanzare il puntatore di memoria interno dal punto di controllo Rij al punto di controllo Ri(j\ +1\ ).

Come accade con tutti i comandi OpenGL che accettano puntatori ai dati, è come se il contenuto dei punti fosse copiato da glMap2 prima che venga restituito. Le modifiche apportate al contenuto dei punti non hanno effetto dopo che glMap2 viene chiamato.

Le funzioni seguenti recuperano informazioni correlate a glMap2:

glGet con argomento GL_MAX_EVAL_ORDER

glGetMap

glIsEnabled con argomento GL_MAP2_VERTEX_3

glIsEnabled con argomento GL_MAP2_VERTEX_4

glIsEnabled con argomento GL_MAP2_INDEX

glIsEnabled con argomento GL_MAP2_COLOR_4

glIsEnabled con argomento GL_MAP2_NORMAL

glIsEnabled con argomento GL_MAP2_TEXTURE_COORD_1

glIsEnabled con argomento GL_MAP2_TEXTURE_COORD_2

glIsEnabled con argomento GL_MAP2_TEXTURE_COORD_3

glIsEnabled con argomento GL_MAP2_TEXTURE_COORD_4

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Gl.h
Libreria
Opengl32.lib
DLL
Opengl32.dll

Vedi anche

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

glEvalPoint

glMap1

glMapGrid

glNormal

glTexCoord

glVertex