glTexSubImage2D 函式

GlTexSubImage2D 函式會指定現有一維材質影像的一部分。 您無法使用 glTexSubImage2D 來定義新的材質。

語法

void WINAPI glTexSubImage2D(
         GLenum  target,
         GLint   level,
         GLint   xoffset,
         GLint   yoffset,
         GLsizei width,
         GLsizei height,
         GLenum  format,
         GLenum  type,
   const GLvoid  *pixels
);

參數

目標

目標材質。 必須是 GL _ 紋理 _ 2d。

level

詳細資料層級數目。 層級0是基底映射。 層級 n 是第 n 個 mipmap 縮減影像。

xoffset

紋理陣列內 x 方向的材質位移。

yoffset

紋理陣列中 y 方向的材質位移。

width (寬度)

材質子影像的寬度。

height (高度)

材質子影像的高度。

format

圖元資料的格式。 它可以採用下列其中一個符號值。

意義
GL _ 色彩 _ 索引
每個元素都是單一值,也就是色彩索引。 它會轉換成固定點格式 (在二進位點的右邊有未指定的0位位數) 、向左或向右移動,視 GL 索引移位的值和正負號而定, _ _ 然後新增至 gl _ 索引 _ 位移 (查看 glPixelTransfer) 。 產生的索引會使用 GL _ 圖元 _ 地圖 _ i _ 到 _ R、gl _ 圖元 _ 地圖 _ i _ 到 _ G、gl _ 圖元 _ 地圖 _ i _ 到 _ B,以及 gl _ 圖元 _ 對應 _ i 至 _ _ 資料表,並壓制至範圍 [ 0,1 ] ,轉換成一組色彩元件。
GL _ 紅色
每個元素都是單一的紅色元件。 它會轉換為浮點格式並組合成 RGBA 元素,方法是附加0.0 (適用于綠色和藍色)和1.0 (Alpha)。 接著,每個元件會乘以已簽署的縮放比例 GL _ c _ 規模、新增至帶正負號偏差 gl _ c _ 偏差,然後壓制至範圍 [ 0,1 ] (查看 glPixelTransfer) 。
GL _ 綠
每個元素都是一個綠色的元件。 它會轉換成浮點數格式並組合成 RGBA 元素,方法是附加0.0 (紅色和藍色)和1.0 (Alpha)。 接著,每個元件會乘以已簽署的縮放比例 GL _ c _ 規模、新增至帶正負號偏差 gl _ c _ 偏差,然後壓制至範圍 [ 0,1 ] (查看 glPixelTransfer) 。
GL _ 藍色
每個元素都是單一藍色元件。 它會轉換成浮點數格式並組合成 RGBA 元素,方法是附加0.0 (紅色和綠色)和1.0 (Alpha)。 接著,每個元件會乘以已簽署的縮放比例 GL _ c _ 規模、新增至帶正負號偏差 gl _ c _ 偏差,然後壓制至範圍 [ 0,1 ] (查看 glPixelTransfer) 。
GL _ ALPHA
每個元素都是單一 Alpha 元件。 它會轉換成浮點數格式,並藉由附加0.0 的紅色、綠色和藍色來組合成 RGBA 元素。 接著,每個元件會乘以已簽署的縮放比例 GL _ c _ 規模、新增至帶正負號偏差 gl _ c _ 偏差,然後壓制至範圍 [ 0,1 ] (查看 glPixelTransfer) 。
GL _ RGB
每個元素都是 RGB 三重。 它會轉換成浮點數格式,並藉由附加1.0 的 Alpha 來組合成 RGBA 元素。 接著,每個元件會乘以已簽署的縮放比例 GL _ c _ 規模、新增至帶正負號偏差 gl _ c _ 偏差,然後壓制至範圍 [ 0,1 ] (查看 glPixelTransfer) 。
GL _ RGBA
每個元素都是完整的 RGBA 元素。 它會轉換成浮點數。 接著,每個元件會乘以已簽署的縮放比例 GL _ c _ 規模、新增至帶正負號偏差 gl _ c _ 偏差,然後壓制至範圍 [ 0,1 ] (查看 glPixelTransfer) 。
GL _ 亮度
每個元素都是單一的亮度值。 它會轉換成浮點數格式,然後將亮度值複寫三次(針對紅色、綠色和藍色),然後附加1.0 (Alpha),以組合成 RGBA 元素。 接著,每個元件會乘以已簽署的縮放比例 GL _ c _ 規模、新增至帶正負號偏差 gl _ c _ 偏差,然後壓制至範圍 [ 0,1 ] (查看 glPixelTransfer) 。
GL _ 亮度 _ ALPHA
每個元素都是一組明亮度/Alpha 配對。 它會轉換為浮點格式,然後藉由針對紅色、綠色和藍色複寫亮度值三次,來組合成 RGBA 元素。 接著,每個元件會乘以已簽署的縮放比例 GL _ c _ 規模、新增至帶正負號偏差 gl _ c _ 偏差,然後壓制至範圍 [ 0,1 ] (查看 glPixelTransfer) 。

type

圖元資料的資料類型。 接受下列符號值: GL _ 未簽署 _ 位元組、gl _ 位元組、GL _ 點陣圖、gl _ 未簽署 _ 短、gl _ 簡短、GL 不 _ 帶正負號 _ int、GL _ int 和 gl _ FLOAT。

圖元

記憶體中影像資料的指標。

傳回值

此函式不會傳回值。

錯誤碼

GlGetError函式可以取出下列錯誤碼。

名稱 意義
GL _ 無效 _ 列舉
目標 不是 GL _ 紋理 _ 2d。
GL _ 無效 _ 列舉
格式 不是可接受的常數。
GL _ 無效 _ 列舉
類型 不是可接受的常數。
GL _ 無效 _ 列舉
類型 為 gl _ 點陣圖, 格式 不是 gl _ 色彩 _ 索引。
GL _ 無效 _ 值
層級 小於零或大於 log2 max,其中 max 是 GL _ 最大紋理大小的傳回值 _ _ 。
GL _ 無效 _ 值
xoffset 小於-b;或 xoffset + 寬度 大於 w - b; 或 yoffset 小於-b; 或 yoffset + 高度 大於 h - b,其中 w 是 gl _ 材質 _ 寬度, h 是 gl _ 材質 _ 高度,而 b 則是 _ _ 要修改之紋理影像的 GL 紋理框線寬度。
請注意, wh 包含框線寬度的兩倍。
GL _ 無效 _ 值
寬度 小於 b,其中 b 是材質陣列的框線寬度。
GL _ 無效 _ 值
框線 不是零或1。
GL _ 不正確 _ 操作
材質陣列未由先前的 glTexImage2D 作業定義。
GL _ 不正確 _ 操作
呼叫 glBegin 和對應的 glEnd呼叫之間呼叫了函數。

備註

使用 glEnableglDisable 搭配引數 GL 材質2d,可啟用基本的二維紋理 _ _ 。 在紋理期間,指定之材質影像的一部分會對應到每個已啟用的基本類型。 您可以使用 glTexSubImage2D 函式來指定用於紋理的現有二維紋理影像的連續子影像。

圖元 所參考的材質會將現有材質陣列的區域 取代為 xoffsetxoffset + (寬度 1) 內含和 y 索引( yoffsetyoffset + (高度 1) 包含)。 此區域無法在原始指定的材質陣列範圍之外包含任何材質。

指定 寬度 為零的子影像沒有任何作用,也不會產生錯誤。

紋理在色彩索引模式中沒有任何作用。

一般而言,材質影像可以用與 glDrawPixels 命令中的圖元相同的資料格式表示,但 _ 無法使用 gl 樣板 _ 索引和 gl _ 深度 _ 元件。 GlPixelStoreglPixelTransfer模式會以其影響 glDrawPixels 的確切方式來影響紋理影像。

下列函式會取出與 glTexSubImage2D 相關的資訊:

glGetTexImage

具有引數 GL _ 材質 _ 2d 的 glIsEnabled

規格需求

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

另請參閱

glCopyTexImage1D

glCopyTexImage2D

glCopyTexSubImage1D

glCopyTexSubImage2D

glDrawPixels

glEnable

glFog

glGetTexImage

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexImage2D

glTexSubImage1D

glTexImage2D

glTexParameter