glTexSubImage1D 函式
glTexSubImage1D 函式會指定現有一維紋理影像的一部分。 您無法使用 glTexSubImage1D 來定義新的紋理。
語法
void WINAPI glTexSubImage1D(
GLenum target,
GLint level,
GLint xoffset,
GLsizei width,
GLenum format,
GLenum type,
const GLvoid *pixels
);
參數
-
目標
-
目標紋理。 必須是GL_TEXTURE_1D。
-
level
-
詳細資料層級。 層級 0 是基底映射。 Level n 是第 n 個 mipmap 縮減影像。
-
xoffset
-
紋理陣列中 X 方向的紋素位移 。
-
寬度
-
紋理子影像的寬度。
-
format
-
圖元資料的格式。 此參數可以假設下列其中一個符號值。
值 意義 - GL_COLOR_INDEX
每個元素都是單一值,也就是色彩索引。 它會轉換成固定點格式(在二進位點右邊有未指定的 0 位數目)、根據GL_INDEX_SHIFT的值和符號而向左或向右移位,並新增至GL_INDEX_OFFSET(請參閱 glPixelTransfer )。 產生的索引會使用GL_PIXEL_MAP_I_TO_R、GL_PIXEL_MAP_I_TO_G、GL_PIXEL_MAP_I_TO_B和GL_PIXEL_MAP_I_TO_A資料表轉換成一組色彩元件,並夾在範圍 [0,1]。 - GL_RED
每個元素都是單一紅色元件。 它會藉由附加 0.0 表示綠色和藍色,以及 1.0 表示 Alpha,轉換成浮點格式,並組合成 RGBA 元素。 然後,每個元件都會乘以帶正負號的縮放比例GL_c_SCALE、新增至帶正負號偏差GL_c_BIAS,並夾在範圍 [0,1] (請參閱 glPixelTransfer )。 - GL_GREEN
每個元素都是單一綠色元件。 它會藉由附加 0.0 表示紅色和藍色,以及 1.0 表示 Alpha,轉換成浮點格式,並組合成 RGBA 元素。 然後,每個元件都會乘以帶正負號的縮放比例GL_c_SCALE、新增至帶正負號偏差GL_c_BIAS,並夾在範圍 [0,1] (請參閱 glPixelTransfer )。 - GL_BLUE
每個元素都是單一藍色元件。 它會藉由附加 0.0 表示紅色和綠色,以及 1.0 表示 Alpha,轉換成浮點格式,並組合成 RGBA 元素。 然後,每個元件都會乘以帶正負號的縮放比例GL_c_SCALE、新增至帶正負號偏差GL_c_BIAS,並夾在範圍 [0,1] (請參閱 glPixelTransfer )。 - GL_ALPHA
每個元素都是單一 Alpha 元件。 它會藉由附加 0.0 表示紅色、綠色和藍色,轉換為浮點格式,並組合成 RGBA 元素。 然後,每個元件都會乘以帶正負號的縮放比例GL_c_SCALE、新增至帶正負號偏差GL_c_BIAS,並夾在範圍 [0,1] (請參閱 glPixelTransfer )。 - GL_RGB
每個元素都是 RGB 三倍。 它會藉由附加 1.0 表示 Alpha,轉換為浮點並組合成 RGBA 元素。 然後,每個元件都會乘以帶正負號的縮放比例GL_c_SCALE、新增至帶正負號偏差GL_c_BIAS,並夾在範圍 [0,1] (請參閱 glPixelTransfer )。 - GL_RGBA
每個元素都是完整的 RGBA 元素。 它會轉換成浮點格式。 然後,每個元件都會乘以帶正負號的縮放比例GL_c_SCALE、新增至帶正負號偏差GL_c_BIAS,並夾在範圍 [0,1] (請參閱 glPixelTransfer )。 - GL_LUMINANCE
每個元素都是單一亮度值。 它會轉換成浮點格式,然後藉由複寫紅色、綠色和藍色的亮度值三次,然後組合成 RGBA 元素,並附加 1.0 表示 Alpha。 然後,每個元件都會乘以帶正負號的縮放比例GL_c_SCALE、新增至帶正負號偏差GL_c_BIAS,並夾在範圍 [0,1] (請參閱 glPixelTransfer )。 - GL_LUMINANCE_ALPHA
每個元素都是亮度/Alpha 配對。 它會轉換成浮點格式,然後藉由複寫紅色、綠色和藍色的亮度值三次,組合成 RGBA 元素。 然後,每個元件都會乘以帶正負號的縮放比例GL_c_SCALE、新增至帶正負號偏差GL_c_BIAS,並夾在範圍 [0,1] (請參閱 glPixelTransfer )。 -
type
-
圖元資料的資料類型。 接受下列符號值:GL_UNSIGNED_BYTE、GL_BYTE、GL_BITMAP、GL_UNSIGNED_SHORT、GL_SHORT、GL_UNSIGNED_INT、GL_INT和GL_FLOAT。
-
圖元
-
記憶體中影像資料的指標。
傳回值
此函式不會傳回值。
錯誤碼
glGetError 函式可以擷 取下列錯誤碼。
名稱 | 意義 |
---|---|
|
目標 不是GL_TEXTURE_1D。 |
|
format 不是接受的常數。 |
|
type 不是接受的常數。 |
|
類型 為 GL_BITMAP,且 格式 未GL_COLOR_INDEX。 |
|
level 小於零或大於 log2 max ,其中 max 是傳回的值 GL_MAX_TEXTURE_SIZE。 |
|
xoffset 小於 b ,或 位移 + 寬度 大於 wb ,其中 w 是GL_TEXTURE_WIDTH,而 b 是修改紋理影像GL_TEXTURE_BORDER的寬度。 請注意, w 包含兩倍的框線寬度。 |
|
width 小於 b ,其中 b 是紋理陣列的框線寬度。 |
|
框線 不是零或 1。 |
|
先前的 glTexImage1D 作業並未定義 texure 陣列。 |
|
在 glBegin 呼叫 與 glEnd 的對應呼叫之間呼叫 函式。 |
備註
使用 glEnable 和 glDisable 搭配引數GL_TEXTURE_1D啟用 基本類型的一維文字。 在紋理期間,指定紋理影像的一部分會對應至每個啟用的基本類型。 您可以使用 glTexSubImage1D 函式來指定現有一維紋理影像的連續子影像以進行紋理製作。
圖元所 參考的紋素會以 xoffset 和 xoffset + ( 寬度 1) 的 x 索引 取代現有紋理陣列 的區域。 這個區域不能包含原始指定之紋理陣列範圍以外的任何材質。
指定寬度 為零的子影像 沒有任何作用,而且不會產生錯誤。
著色器在色彩索引模式中沒有作用。
一般而言,紋理影像可以用與 glDrawPixels 命令中 圖元相同的資料格式來表示,但無法使用GL_STENCIL_INDEX和GL_DEPTH_COMPONENT。 glPixelStore 和 glPixelTransfer 模式會以影響 glDrawPixels 的方式 影響紋理影像。
下列函式會擷取 glTexSubImage1D 的相關資訊 :
glIsEnabled 搭配引數GL_TEXTURE_1D
需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows 2000 Server [僅限傳統型應用程式] |
標題 |
|
程式庫 |
|
DLL |
|