英語で読む

次の方法で共有


glMap1f 関数

glMap1d 関数と glMap1f 関数は、1 次元エバリュエーターを定義します。

構文

void WINAPI glMap1f(
         GLenum  target,
         GLfloat u1,
         GLfloat u2,
         GLint   stride,
         GLint   order,
   const GLfloat *points
);

パラメーター

target

エバリュエーターによって生成される値の種類。 シンボリック定数。 ターゲット パラメーターは、ポイントで提供されるコントロール ポイントの種類と、マップの評価時に生成される出力を示すシンボリック定数です。 9 つの定義済み値のいずれかと見なすことができます。

説明
GL_MAP1_VERTEX_3
各コントロール ポイントは、x、y、z を表す 3 つの浮動小数点値です。 内部 glVertex3 コマンドは、マップの評価時に生成されます。
GL_MAP1_VERTEX_4
各コントロール ポイントは、x、y、z、w を表す 4 つの浮動小数点値です。 内部 glVertex4 コマンドは、マップの評価時に生成されます。
GL_MAP1_INDEX
各コントロール ポイントは、色のインデックスを表す単一の浮動小数点値です。 内部 glIndex コマンドは、マップの評価時に生成されます。 ただし、現在のインデックスは、これらの glIndex コマンドの値では更新されません。
GL_MAP1_COLOR_4
各コントロール ポイントは、赤、緑、青、アルファを表す 4 つの浮動小数点値です。 内部 glColor4 コマンドは、マップの評価時に生成されます。 ただし、現在の色は、これらの glColor4 コマンドの値では更新されません。
GL_MAP1_NORMAL
各コントロール ポイントは、法線ベクトルの x、y、z の各成分を表す 3 つの浮動小数点値です。 内部 glNormal コマンドは、マップの評価時に生成されます。 ただし、現在の標準は、これらの glNormal コマンドの値では更新されません。
GL_MAP1_TEXTURE_COORD_1
各コントロール ポイントは 、テクスチャ座標 を表す 1 つの浮動小数点値です。 内部 glTexCoord1 コマンドは、マップの評価時に生成されます。 ただし、現在のテクスチャ座標は、これらの glTexCoord コマンドの値では更新されません。
GL_MAP1_TEXTURE_COORD_2
各コントロール ポイントは、 テクスチャ座標 st を表す 2 つの浮動小数点値です。 内部 glTexCoord2 コマンドは、マップの評価時に生成されます。 ただし、現在のテクスチャ座標は、これらの glTexCoord コマンドの値では更新されません。
GL_MAP1_TEXTURE_COORD_3
各コントロール ポイントは、s、t、および r のテクスチャ座標を表す 3 つの浮動小数点値です。 内部 glTexCoord3 コマンドは、マップの評価時に生成されます。 ただし、現在のテクスチャ座標は、これらの glTexCoord コマンドの値では更新されません。
GL_MAP1_TEXTURE_COORD_4
各コントロール ポイントは、s、t、r、および q のテクスチャ座標を表す 4 つの浮動小数点値です。 内部 glTexCoord4 コマンドは、マップの評価時に生成されます。 ただし、現在のテクスチャ座標は、これらの glTexCoord コマンドの値では更新されません。

u1

glEvalCoord1 に提示される u から u^ への線形マッピング。このコマンドで指定された数式によって評価される変数。

u2

glEvalCoord1 に提示される u から u^ への線形マッピング。このコマンドで指定された数式によって評価される変数。

stride

1 つのコントロール ポイントの先頭から、 ポイントで参照されるデータ構造内の次のコントロール ポイントの先頭までの間の浮動小数点数または倍精度浮動小数点の数。 これにより、コントロール ポイントを任意のデータ構造に埋め込むことができます。 唯一の制約は、特定のコントロール ポイントの値が連続したメモリ位置を占める必要があることです。

order

コントロール ポイントの数。 正である必要があります。

ポイント

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

戻り値

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

エラー コード

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

名前 意味
GL_INVALID_ENUM
target が受け入れられた値ではありません。
GL_INVALID_VALUE
u1u2 と等しい。
GL_INVALID_VALUE
ストライド がコントロール ポイント内の値の数より少なかった。
GL_INVALID_VALUE
注文 が 1 つまたはGL_MAX_EVAL_ORDER未満でした。
GL_INVALID_OPERATION
この関数は、 glBegin の呼び出しと glEnd の対応する呼び出しの間で呼び出されました。

解説

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

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

エバリュエーターは、バーンスタイン多項式に基づいて曲線を定義します。 p () を として定義する

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

ここで、Ri は制御点であり、() は次数 n (次数 =n + 1) のバーンスタイン多項式 i です。

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

思い出してください。

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

glMap1 関数は、基準を定義し、生成される値の種類を指定するために使用されます。 定義すると、マップ名を使用して glEnableglDisable を呼び出すことによって、マップを有効または無効にすることができます。これは、前述の ターゲット に対して定義済みの 9 つの値のいずれかです。 glEvalCoord1 関数は、有効になっている 1 次元マップを評価します。 glEvalCoord1 が値 u を示す場合、Bernstein 関数は u^ を使用して評価されます。ここで、

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

ストライド順序およびポイントのパラメーターは、コントロール ポイントにアクセスするための配列アドレス指定を定義します。 points パラメーターは、定義されているマップに応じて、1 つ目、2 つ、3 つ、または 4 つの連続したメモリ位置を占める最初のコントロール ポイントの場所です。 order パラメーターは、配列内の制御ポイントの数です。 stride パラメーターは、内部メモリ ポインターを次のコントロール ポイントに到達させるために進める float または double の位置の数を示します。

データへのポインターを受け入れるすべての OpenGL コマンドの場合と同様に、 ポイント の内容が返される前に glMap1 によってコピーされたかのように見えます。 glMap1 が呼び出された後、ポイントの内容に対する変更は無効です。

次の関数は 、glMap1 に関連する情報を取得します。

引数GL_MAX_EVAL_ORDERを含む glGet

glGetMap

glIsEnabled と引数 GL_MAP1_VERTEX_3

glIsEnabled と引数 GL_MAP1_VERTEX_4

引数GL_MAP1_INDEXを使用した glIsEnabled

引数GL_MAP1_COLOR_4を使用した glIsEnabled

glIsEnabled と引数 GL_MAP1_NORMAL

glIsEnabled と引数GL_MAP1_TEXTURE_COORD_1

引数GL_MAP1_TEXTURE_COORD_2を使用した glIsEnabled

引数GL_MAP1_TEXTURE_COORD_3を使用した glIsEnabled

引数GL_MAP1_TEXTURE_COORD_4を使用した glIsEnabled

必要条件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Gl.h
ライブラリ
Opengl32.lib
[DLL]
Opengl32.dll

関連項目

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

glEvalPoint

glMap2

glMapGrid

glNormal

glTexCoord

glVertex