glMap2f 函式

glMap2dglMap2f函式會定義二維評估工具。

語法

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

參數

目標

評估工具所產生的值種類。 接受下列符號常數。

意義
GL_MAP2_VERTEX_3
每個控制點都是三個浮點值 ,代表 x、yz。 評估地圖時,會產生內部 glVertex3 命令。
GL_MAP2_VERTEX_4
每個控制點都是四個浮點值 ,代表 x、y、zw。 評估地圖時會產生內部 glVertex4 命令。
GL_MAP2_INDEX
每個控制點都是代表色彩索引的單一浮點值。 評估對應時,會產生內部 glIndex 命令。 不過,目前的索引不會以這些 glIndex 命令的值來更新。
GL_MAP2_COLOR_4
每個控制點都是四個浮點值,代表紅色、綠色、藍色和 Alpha。 評估地圖時會產生內部 glColor4 命令。 不過,目前的色彩不會以這些 glColor4 命令的值來更新。
GL_MAP2_NORMAL
每個控制點都是三個浮點值,代表一般向量的 x、yz 元件。 評估對應時會產生內部 glNormal 命令。 不過,目前的一般不會以這些 glNormal 命令的值來更新。
GL_MAP2_TEXTURE_COORD_1
每個控制點都是代表 紋理 座標的單一浮點值。 評估地圖時,會產生內部 glTexCoord1 命令。 不過,目前的紋理座標不會以這些 glTexCoord 命令的值來更新。
GL_MAP2_TEXTURE_COORD_2
每個控制點都是兩個浮點值,代表 st 紋理座標。 評估地圖時,會產生內部 glTexCoord2 命令。 不過,目前的紋理座標不會以這些 glTexCoord 命令的值來更新。
GL_MAP2_TEXTURE_COORD_3
每個控制點都是三個浮點值 ,代表 s、tr 紋理座標。 評估地圖時,會產生內部 glTexCoord3 命令。 不過,目前的紋理座標不會以這些 glTexCoord 命令的值來更新。
GL_MAP2_TEXTURE_COORD_4
每個控制點都是四個浮點值 ,代表 s、t、rq 紋理座標。 評估地圖時,會產生內部 glTexCoord4 命令。 不過,目前的紋理座標不會以這些 glTexCoord 命令的值來更新。

u1

u的線性對應,如glEvalCoord2所呈現,對應至u^,這是此命令所指定方程式所評估的兩個變數之一。

u2

u的線性對應,如glEvalCoord2所呈現,對應至u^,這是此命令所指定方程式所評估的兩個變數之一。

ustride

控制點Rij與控制點R開頭之間的浮點數或雙精度浮點數,分別 (i\ +1\ ) \ j,其中ij分別是uv控制點索引。 這可讓控制點內嵌在任意資料結構中。 唯一的條件約束是特定控制點的值必須佔用連續的記憶體位置。

uorder

u軸中控制點陣列的維度。 必須是正數。

v1

v的線性對應,如glEvalCoord2所呈現,對應至v^,這是此命令所指定方程式所評估的兩個變數之一。

v2

v的線性對應,如glEvalCoord2所呈現,對應至v^,這是此命令所指定方程式所評估的兩個變數之一。

vstride

控制點 Rij 與控制點 R (j\ +1\ ) 之間的控制點開頭之間的浮點數或雙精度浮點數,其中 ij 分別是 uv 控制點索引。 這可讓控制點內嵌在任意資料結構中。 唯一的條件約束是特定控制點的值必須佔用連續的記憶體位置。

vorder

v軸中控制點陣列的維度。 必須是正數。

控制點陣列的指標。

傳回值

此函式不會傳回值。

錯誤碼

glGetError函式可以擷取下列錯誤碼。

名稱 意義
GL_INVALID_ENUM
target 不是接受的值。
GL_INVALID_VALUE
u1 等於 u2,或 v1 等於 v2
GL_INVALID_VALUE
ustridevstride小於控制點中的值數目。
GL_INVALID_VALUE
uordervorder小於一或GL_MAX_EVAL_ORDER。
GL_INVALID_OPERATION
對 glBegin 的呼叫與 glEnd的對應呼叫之間呼叫函式。

備註

評估工具提供一種方式,以使用多項式或合理多項式對應來產生頂點、常態、紋理座標和色彩。 評估工具所產生的值會傳送至 OpenGL 處理的進一步階段,就像使用 glVertexglNormalglTexCoordglColor 命令呈現它們一樣,不同之處在于產生的值不會更新目前的正常、紋理座標或色彩。

任何度的所有多項式或合理多項式曲線 (最高到 OpenGL 實作支援的最大度數) 都可以使用評估工具來描述。 這些幾乎包括電腦圖形中使用的所有表面,包括 B 曲線介面、NURBS 介面、Bezier 介面等等。

評估工具會根據 bivariate Bernstein polynomials 來定義表面。 將 p (u^,v^) 定義為

方程式顯示 p () 的定義。

其中 Rij 是一個控制點, () 是第 ith一個系結元的多項式程度

n (uorder = n + 1)

方程式,其中顯示 Degree n 的系結元。

and () 是m (vorder = m + 1)

方程式,其中顯示係數公尺的系結。

回想一下

顯示等於 1 的方程式。

glMap2函式可用來定義基礎,並指定產生何種值。 定義之後,您可以呼叫 glEnableglDisable ,並使用對應名稱來啟用和停用對應,這是上述 目標九個預先定義值的其中一個。 當 glEvalCoord2呈現uv值時,會使用u^ 和v^來評估 bivariate Bernstein 多項式,其中

方程式顯示您^的定義。

顯示 v^定義的方程式。

目標參數是符號常數,指出以為單位提供何種控制點,以及評估地圖時產生的輸出。

ustrideuordervstridevorderpoints參數會定義用來存取控制點的陣列位址。 points參數是第一個控制點的位置,它會根據定義的對應,佔用一、二、三或四個連續記憶體位置。 陣列中有 uorder x vorder 控制點。 ustride參數會指示略過多少浮點或雙精度浮點,以將內部記憶體指標從控制點Rij移至控制點R (\ i+1\ ) jvstride參數會告知略過多少浮點或雙精度浮點,以將內部記憶體指標從控制點Rij移至控制點Ri (j\ +1\ )

如同所有接受資料指標的 OpenGL 命令的情況,就像在傳回之前 glMap2複製的內容一樣。 呼叫glMap2之後,內容的變更不會有任何作用。

下列函式會擷取 glMap2的相關資訊:

glGet 搭配引數GL_MAX_EVAL_ORDER

glGetMap

glIsEnabled with argument GL_MAP2_VERTEX_3

glIsEnabled with argument GL_MAP2_VERTEX_4

glIsEnabled with argument GL_MAP2_INDEX

glIsEnabled with argument GL_MAP2_COLOR_4

glIsEnabled with argument GL_MAP2_NORMAL

glIsEnabled with argument GL_MAP2_TEXTURE_COORD_1

glIsEnabled with argument GL_MAP2_TEXTURE_COORD_2

glIsEnabled with argument GL_MAP2_TEXTURE_COORD_3

glIsEnabled with argument GL_MAP2_TEXTURE_COORD_4

規格需求

需求
最低支援的用戶端
Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標頭
Gl.h
程式庫
Opengl32.lib
DLL
Opengl32.dll

另請參閱

glBegin

glColor

glEnable

glEnd

glEvalCoord

glEvalMesh

glEvalPoint

glMap1

glMapGrid

glNormal

glTexCoord

glVertex