glMap2f 函式
glMap2d和glMap2f函式會定義二維評估工具。
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、y 和 z。 評估地圖時,會產生內部 glVertex3 命令。 - GL_MAP2_VERTEX_4
每個控制點都是四個浮點值 ,代表 x、y、z 和 w。 評估地圖時會產生內部 glVertex4 命令。 - GL_MAP2_INDEX
每個控制點都是代表色彩索引的單一浮點值。 評估對應時,會產生內部 glIndex 命令。 不過,目前的索引不會以這些 glIndex 命令的值來更新。 - GL_MAP2_COLOR_4
每個控制點都是四個浮點值,代表紅色、綠色、藍色和 Alpha。 評估地圖時會產生內部 glColor4 命令。 不過,目前的色彩不會以這些 glColor4 命令的值來更新。 - GL_MAP2_NORMAL
每個控制點都是三個浮點值,代表一般向量的 x、y 和 z 元件。 評估對應時會產生內部 glNormal 命令。 不過,目前的一般不會以這些 glNormal 命令的值來更新。 - GL_MAP2_TEXTURE_COORD_1
每個控制點都是代表 紋理 座標的單一浮點值。 評估地圖時,會產生內部 glTexCoord1 命令。 不過,目前的紋理座標不會以這些 glTexCoord 命令的值來更新。 - GL_MAP2_TEXTURE_COORD_2
每個控制點都是兩個浮點值,代表 s 和 t 紋理座標。 評估地圖時,會產生內部 glTexCoord2 命令。 不過,目前的紋理座標不會以這些 glTexCoord 命令的值來更新。 - GL_MAP2_TEXTURE_COORD_3
每個控制點都是三個浮點值 ,代表 s、t 和 r 紋理座標。 評估地圖時,會產生內部 glTexCoord3 命令。 不過,目前的紋理座標不會以這些 glTexCoord 命令的值來更新。 - GL_MAP2_TEXTURE_COORD_4
每個控制點都是四個浮點值 ,代表 s、t、r 和 q 紋理座標。 評估地圖時,會產生內部 glTexCoord4 命令。 不過,目前的紋理座標不會以這些 glTexCoord 命令的值來更新。 -
u1
-
u的線性對應,如glEvalCoord2所呈現,對應至u^,這是此命令所指定方程式所評估的兩個變數之一。
-
u2
-
u的線性對應,如glEvalCoord2所呈現,對應至u^,這是此命令所指定方程式所評估的兩個變數之一。
-
ustride
-
控制點Rij與控制點R開頭之間的浮點數或雙精度浮點數,分別 (i\ +1\ ) \ j,其中i和j分別是u和v控制點索引。 這可讓控制點內嵌在任意資料結構中。 唯一的條件約束是特定控制點的值必須佔用連續的記憶體位置。
-
uorder
-
u軸中控制點陣列的維度。 必須是正數。
-
v1
-
v的線性對應,如glEvalCoord2所呈現,對應至v^,這是此命令所指定方程式所評估的兩個變數之一。
-
v2
-
v的線性對應,如glEvalCoord2所呈現,對應至v^,這是此命令所指定方程式所評估的兩個變數之一。
-
vstride
-
控制點 Rij 與控制點 R (j\ +1\ ) 之間的控制點開頭之間的浮點數或雙精度浮點數,其中 i 和 j 分別是 u 和 v 控制點索引。 這可讓控制點內嵌在任意資料結構中。 唯一的條件約束是特定控制點的值必須佔用連續的記憶體位置。
-
vorder
-
v軸中控制點陣列的維度。 必須是正數。
-
點
-
控制點陣列的指標。
此函式不會傳回值。
glGetError函式可以擷取下列錯誤碼。
名稱 | 意義 |
---|---|
|
target 不是接受的值。 |
|
u1 等於 u2,或 v1 等於 v2。 |
|
ustride或vstride小於控制點中的值數目。 |
|
uorder或vorder小於一或GL_MAX_EVAL_ORDER。 |
|
在 對 glBegin 的呼叫與 glEnd的對應呼叫之間呼叫函式。 |
評估工具提供一種方式,以使用多項式或合理多項式對應來產生頂點、常態、紋理座標和色彩。 評估工具所產生的值會傳送至 OpenGL 處理的進一步階段,就像使用 glVertex、 glNormal、 glTexCoord和 glColor 命令呈現它們一樣,不同之處在于產生的值不會更新目前的正常、紋理座標或色彩。
任何度的所有多項式或合理多項式曲線 (最高到 OpenGL 實作支援的最大度數) 都可以使用評估工具來描述。 這些幾乎包括電腦圖形中使用的所有表面,包括 B 曲線介面、NURBS 介面、Bezier 介面等等。
評估工具會根據 bivariate Bernstein polynomials 來定義表面。 將 p (u^,v^) 定義為
其中 Rij 是一個控制點, () 是第 ith一個系結元的多項式程度
n (uorder = n + 1)
and () 是m (vorder = m + 1)
回想一下
glMap2函式可用來定義基礎,並指定產生何種值。 定義之後,您可以呼叫 glEnable 和 glDisable ,並使用對應名稱來啟用和停用對應,這是上述 目標九個預先定義值的其中一個。 當 glEvalCoord2呈現u和v值時,會使用u^ 和v^來評估 bivariate Bernstein 多項式,其中
及
目標參數是符號常數,指出以點為單位提供何種控制點,以及評估地圖時產生的輸出。
ustride、uorder、vstride、vorder和points參數會定義用來存取控制點的陣列位址。 points參數是第一個控制點的位置,它會根據定義的對應,佔用一、二、三或四個連續記憶體位置。 陣列中有 uorder x vorder 控制點。 ustride參數會指示略過多少浮點或雙精度浮點,以將內部記憶體指標從控制點Rij移至控制點R (\ i+1\ ) j。 vstride參數會告知略過多少浮點或雙精度浮點,以將內部記憶體指標從控制點Rij移至控制點Ri (j\ +1\ ) 。
如同所有接受資料指標的 OpenGL 命令的情況,就像在傳回之前 glMap2複製點的內容一樣。 呼叫glMap2之後,點內容的變更不會有任何作用。
下列函式會擷取 glMap2的相關資訊:
glGet 搭配引數GL_MAX_EVAL_ORDER
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 [僅限傳統型應用程式] |
標頭 |
|
程式庫 |
|
DLL |
|