glMap2d 関数
glMap2d 関数と glMap2f 関数は、2 次元エバリュエーターを定義します。
構文
void WINAPI glMap2d(
GLenum target,
GLdouble u1,
GLdouble u2,
GLint ustride,
GLint uorder,
GLdouble v1,
GLdouble v2,
GLint vstride,
GLint vorder,
const GLdouble *points
);
パラメーター
-
target
-
エバリュエーターによって生成される値の種類。 次のシンボリック定数を使用できます。
値 説明 - GL_MAP2_VERTEX_3
各コントロール ポイントは、 x、y、 z を表す 3 つの浮動小数点値 です。 マップが評価されると、内部 glVertex3 コマンドが生成されます。 - GL_MAP2_VERTEX_4
各コントロール ポイントは、x、y、z、w を表す 4 つの浮動小数点値です。 マップが評価されると、内部 glVertex4 コマンドが生成されます。 - GL_MAP2_INDEX
各コントロール ポイントは、色インデックスを表す 1 つの浮動小数点値です。 マップが評価されると、内部 glIndex コマンドが生成されます。 ただし、現在のインデックスは、これらの glIndex コマンドの値では更新されません。 - GL_MAP2_COLOR_4
各コントロール ポイントは、赤、緑、青、アルファを表す 4 つの浮動小数点値です。 マップの評価時に、内部 glColor4 コマンドが生成されます。 ただし、現在の色は、これらの glColor4 コマンドの値では更新されません。 - GL_MAP2_NORMAL
各コントロール ポイントは、法線ベクトルの x、y、z 成分を表す 3 つの浮動小数点値です。 内部 glNormal コマンドは、マップの評価時に生成されます。 ただし、現在の標準は、これらの glNormal コマンドの値では更新されません。 - GL_MAP2_TEXTURE_COORD_1
各コントロール ポイントは 、テクスチャ座標 を表す 1 つの浮動小数点値です。 マップが評価されると、内部 glTexCoord1 コマンドが生成されます。 ただし、現在のテクスチャ座標は、これらの glTexCoord コマンドの値では更新されません。 - GL_MAP2_TEXTURE_COORD_2
各コントロール ポイントは、 s と t のテクスチャ座標を表す 2 つの浮動小数点値です。 マップが評価されると、内部 glTexCoord2 コマンドが生成されます。 ただし、現在のテクスチャ座標は、これらの glTexCoord コマンドの値では更新されません。 - GL_MAP2_TEXTURE_COORD_3
各コントロール ポイントは、s、t、r テクスチャ座標を表す 3 つの浮動小数点値です。 マップが評価されると、内部 glTexCoord3 コマンドが生成されます。 ただし、現在のテクスチャ座標は、これらの glTexCoord コマンドの値では更新されません。 - GL_MAP2_TEXTURE_COORD_4
各コントロール ポイントは、s、t、r、および q テクスチャ座標を表す 4 つの浮動小数点値です。 マップが評価されると、内部 glTexCoord4 コマンドが生成されます。 ただし、現在のテクスチャ座標は、これらの glTexCoord コマンドの値では更新されません。 -
u1
-
glEvalCoord2 に提示される u から u^ への線形マッピング。このコマンドで指定された数式によって評価される 2 つの変数のうちの 1 つ。
-
u2
-
glEvalCoord2 に提示される u から u^ への線形マッピング。このコマンドで指定された数式によって評価される 2 つの変数のうちの 1 つ。
-
ustride
-
コントロール ポイント Rij の先頭とコントロール ポイント R(i\ +1\ )\ j の先頭の間の浮動小数点数または倍精度浮動小数点の数。 ここで、i と j はそれぞれ u と v のコントロール ポイントインデックスです。 これにより、コントロール ポイントを任意のデータ構造に埋め込むことができます。 唯一の制約は、特定のコントロール ポイントの値が連続したメモリ位置を占める必要があることです。
-
uorder
-
u 軸のコントロール ポイント配列の次元。 正である必要があります。
-
v1
-
glEvalCoord2 に提示される v と v^の線形マッピング。このコマンドで指定された数式によって評価される 2 つの変数の 1 つ。
-
v2
-
glEvalCoord2 に提示される v と v^の線形マッピング。このコマンドで指定された数式によって評価される 2 つの変数の 1 つ。
-
vstride
-
コントロール ポイント Rij の先頭とコントロール ポイント Ri(j\ +1\ )の先頭の間の浮動小数点数または倍精度浮動小数点の数。 ここで、i と j はそれぞれ u と v のコントロール ポイントインデックスです。 これにより、コントロール ポイントを任意のデータ構造に埋め込むことができます。 唯一の制約は、特定のコントロール ポイントの値が連続したメモリ位置を占める必要があることです。
-
vorder
-
v 軸のコントロール ポイント配列の次元。 正である必要があります。
-
ポイント
-
コントロール ポイントの配列へのポインター。
戻り値
この関数は値を返しません。
エラー コード
glGetError 関数では、次のエラー コードを取得できます。
Name | 意味 |
---|---|
|
target が受け入れられた値ではありません。 |
|
u1 が u2 に等しいか、 v1 が v2 と等しい。 |
|
ustride または vstride のいずれかが、コントロール ポイント内の値の数より少なかった。 |
|
uorder または vorder のいずれかが 1 未満かGL_MAX_EVAL_ORDER。 |
|
glBegin の呼び出しと glEnd の対応する呼び出しの間に関数が呼び出されました。 |
解説
エバリュエーターは、多項式または合理的な多項式マッピングを使用して、頂点、法線、テクスチャ座標、色を生成する方法を提供します。 エバリュエーターによって生成された値は、 glVertex、 glNormal、 glTexCoord、および glColor コマンドを使用して提示された場合と同様に、OpenGL 処理のさらに段階に送信されます。ただし、生成された値は現在の法線、テクスチャ座標、または色を更新しません。
任意の次数 (OpenGL 実装でサポートされる最大次数まで) のすべての多項式または有理多項式スプラインは、エバリュエーターを使用して記述できます。 これには、コンピューター グラフィックスで使用されるほぼすべてのサーフェス (B スプライン サーフェス、NURBS サーフェス、ベジエ サーフェスなど) が含まれます。
エバリュエーターは、二変量ベルンシュタイン多項式に基づいてサーフェスを定義します。 p (u^,v^) を として定義する
ここで、Rij は制御点、() は i 番目のベルンシュタイン多項式の次数です
n (uorder = n + 1)
および () は m のj番目のベルンシュタイン多項式 (vorder = m + 1)
思い出してください。
glMap2 関数は、基準を定義し、生成される値の種類を指定するために使用されます。 マップを定義したら、前述のターゲットの 9 つの定義済み値のいずれかであるマップ名を使用して glEnable と glDisable を呼び出すことで、マップを有効または無効にすることができます。 glEvalCoord2 が u と v の値を示す場合、二変量ベルンシュタイン多項式は u^ と v^ を使用して評価されます。ここで、
および
ターゲット パラメーターは、ポイントで提供されるコントロール ポイントの種類と、マップの評価時に生成される出力を示すシンボリック定数です。
ustride、uorder、vstride、vorder、および points パラメーターは、コントロール ポイントにアクセスするための配列アドレス指定を定義します。 points パラメーターは、定義されているマップに応じて、1 つ目、2 つ、3 つ、または 4 つの連続したメモリ位置を占める最初のコントロール ポイントの場所です。 配列には uorder x vorder コントロール ポイントがあります。 ustride パラメーターは、コントロール ポイント Rij から制御ポイント R(\ i+1\ )j に内部メモリ ポインターを進めるためにスキップされる浮動小数点位置または二重位置の数を示します。 vstride パラメーターは、コントロール ポイント Rij から制御ポイント Ri(j\ +1\ ) に内部メモリ ポインターを進めるためにスキップされる浮動小数点または二重の場所の数を示します。
データへのポインターを受け入れるすべての OpenGL コマンドの場合と同様に、 ポイント の内容が返される前に glMap2 によってコピーされたかのように見えます。 ポイントの内容に対する変更は、glMap2 が呼び出された後は影響しません。
次の関数は 、glMap2 に関連する情報を取得します。
引数GL_MAX_EVAL_ORDERを含む glGet
glIsEnabled with argument GL_MAP2_VERTEX_3
glIsEnabled と引数 GL_MAP2_VERTEX_4
glIsEnabled と引数 GL_MAP2_INDEX
glIsEnabled with argument GL_MAP2_COLOR_4
glIsEnabled と引数 GL_MAP2_NORMAL
glIsEnabled with argument GL_MAP2_TEXTURE_COORD_1
glIsEnabled with argument GL_MAP2_TEXTURE_COORD_2
glIsEnabled と引数 GL_MAP2_TEXTURE_COORD_3
glIsEnabled with argument GL_MAP2_TEXTURE_COORD_4
必要条件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー |
|
ライブラリ |
|
[DLL] |
|