英語で読む

次の方法で共有


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
各コントロール ポイントは、 st のテクスチャ座標を表す 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 の先頭の間の浮動小数点数または倍精度浮動小数点の数。 ここで、ij はそれぞれ uv のコントロール ポイントインデックスです。 これにより、コントロール ポイントを任意のデータ構造に埋め込むことができます。 唯一の制約は、特定のコントロール ポイントの値が連続したメモリ位置を占める必要があることです。

uorder

u 軸のコントロール ポイント配列の次元。 正である必要があります。

v1

glEvalCoord2 に提示される vv^の線形マッピング。このコマンドで指定された数式によって評価される 2 つの変数の 1 つ。

v2

glEvalCoord2 に提示される vv^の線形マッピング。このコマンドで指定された数式によって評価される 2 つの変数の 1 つ。

vstride

コントロール ポイント Rij の先頭とコントロール ポイント Ri(j\ +1\ )の先頭の間の浮動小数点数または倍精度浮動小数点の数。 ここで、ij はそれぞれ uv のコントロール ポイントインデックスです。 これにより、コントロール ポイントを任意のデータ構造に埋め込むことができます。 唯一の制約は、特定のコントロール ポイントの値が連続したメモリ位置を占める必要があることです。

vorder

v 軸のコントロール ポイント配列の次元。 正である必要があります。

ポイント

コントロール ポイントの配列へのポインター。

戻り値

この関数は値を返しません。

エラー コード

glGetError 関数では、次のエラー コードを取得できます。

Name 意味
GL_INVALID_ENUM
target が受け入れられた値ではありません。
GL_INVALID_VALUE
u1u2 に等しいか、 v1v2 と等しい。
GL_INVALID_VALUE
ustride または vstride のいずれかが、コントロール ポイント内の値の数より少なかった。
GL_INVALID_VALUE
uorder または vorder のいずれかが 1 未満かGL_MAX_EVAL_ORDER。
GL_INVALID_OPERATION
glBegin の呼び出しと glEnd の対応する呼び出しの間に関数が呼び出されました。

解説

エバリュエーターは、多項式または合理的な多項式マッピングを使用して、頂点、法線、テクスチャ座標、色を生成する方法を提供します。 エバリュエーターによって生成された値は、 glVertexglNormalglTexCoord、および glColor コマンドを使用して提示された場合と同様に、OpenGL 処理のさらに段階に送信されます。ただし、生成された値は現在の法線、テクスチャ座標、または色を更新しません。

任意の次数 (OpenGL 実装でサポートされる最大次数まで) のすべての多項式または有理多項式スプラインは、エバリュエーターを使用して記述できます。 これには、コンピューター グラフィックスで使用されるほぼすべてのサーフェス (B スプライン サーフェス、NURBS サーフェス、ベジエ サーフェスなど) が含まれます。

エバリュエーターは、二変量ベルンシュタイン多項式に基づいてサーフェスを定義します。 p (u^,v^) を として定義する

p () の定義を示す数式。

ここで、Rij は制御点、() は i 番目のベルンシュタイン多項式の次数です

n (uorder = n + 1)

n度のバーンスタイン多項式を示す式。

および () は m のj番目のベルンシュタイン多項式 (vorder = m + 1)

m度のバーンスタイン多項式を示す式。

思い出してください。

1 と等価であることを示す数式。

glMap2 関数は、基準を定義し、生成される値の種類を指定するために使用されます。 マップを定義したら、前述のターゲットの 9 つの定義済み値のいずれかであるマップ名を使用して glEnableglDisable を呼び出すことで、マップを有効または無効にすることができます。 glEvalCoord2uv の値を示す場合、二変量ベルンシュタイン多項式は u^ と v^ を使用して評価されます。ここで、

自分の定義を示す数式^。

および

v^ の定義を示す数式。

ターゲット パラメーターは、ポイントで提供されるコントロール ポイントの種類と、マップの評価時に生成される出力を示すシンボリック定数です。

ustrideuordervstridevorderおよび 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

glGetMap

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 [デスクトップ アプリのみ]
ヘッダー
Gl.h
ライブラリ
Opengl32.lib
[DLL]
Opengl32.dll

関連項目

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

glEvalPoint

glMap1

glMapGrid

glNormal

glTexCoord

glVertex