glTexSubImage2D 関数

glTexSubImage2D 関数では、1 次元テクスチャ イメージの一部が指定されます。 glTexSubImage2D で新しいテクスチャを定義することはできません。

構文

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

パラメーター

ターゲット

対象テクスチャ。 GL_TEXTURE_2D にする必要があります。

level

詳細設定のレベル番号。 レベル 0 は基本イメージです。 レベル nn 番目のミップマップ縮小画像です。

xoffset

テクスチャ配列内の x 方向のテクセル オフセット。

yoffset

テクスチャ配列内の y 方向のテクセル オフセット。

width

テクスチャ サブイメージの幅。

height

テクスチャ サブイメージの高さ。

format

ピクセル データの形式。 これには次のシンボリック値のいずれかを想定できます。

Value 意味
GL_COLOR_INDEX
各要素は単一の値であり、色のインデックスです。 これは、(2 進小数点の右側に不特定多数の 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 をアタッチすることで RGBA 要素にまとめられます。 次に、各コンポーネントに符号付きスケール ファクター GL_c_SCALE を乗算し、符号付きバイアス GL_c_BIAS に加算し、範囲 [0,1] に固定されます (glPixelTransfer 参照)。
GL_GREEN
各要素は単一の緑のコンポーネントです。 これは浮動小数点形式に変換され、赤と青の場合は 0.0、アルファの場合は 1.0 をアタッチすることで RGBA 要素にまとめられます。 次に、各コンポーネントに符号付きスケール ファクター GL_c_SCALE を乗算し、符号付きバイアス GL_c_BIAS に加算し、範囲 [0,1] に固定します (glPixelTransfer 参照)。
GL_BLUE
各要素は単一の青のコンポーネントです。 これは浮動小数点形式に変換され、赤と緑の場合は 0.0、アルファの場合は 1.0 をアタッチすることで RGBA 要素にまとめられます。 次に、各コンポーネントに符号付きスケール ファクター GL_c_SCALE を乗算し、符号付きバイアス GL_c_BIAS に加算し、範囲 [0,1] に固定されます (glPixelTransfer 参照)。
GL_ALPHA
各要素は単一のアルファ コンポーネントです。 これは浮動小数点形式に変換され、赤、緑、青の場合は 0.0 をアタッチすることで RGBA 要素にまとめられます。 次に、各コンポーネントに符号付きスケール ファクター GL_c_SCALE を乗算し、符号付きバイアス GL_c_BIAS に加算し、範囲 [0,1] に固定します (glPixelTransfer 参照)。
GL_RGB
各要素は RGB トリプルです。 これは浮動小数点形式に変換され、アルファの場合は 1.0 をアタッチすることで RGBA 要素にまとめられます。 次に、各コンポーネントに符号付きスケール ファクター GL_c_SCALE を乗算し、符号付きバイアス GL_c_BIAS に加算し、範囲 [0,1] に固定されます (glPixelTransfer 参照)。
GL_RGBA
各要素は完全な RGBA 要素です。 これは、浮動小数点に変換されます。 次に、各コンポーネントに符号付きスケール ファクター GL_c_SCALE を乗算し、符号付きバイアス GL_c_BIAS に加算し、範囲 [0,1] に固定されます (glPixelTransfer 参照)。
GL_LUMINANCE
各要素は単一の輝度値です。 これは、浮動小数点形式に変換された後、赤、緑、青の輝度値を 3 回レプリケートし、アルファの場合は 1.0 をアタッチすることで、RGBA 要素にまとめられます。 次に、各コンポーネントに符号付きスケール ファクター GL_c_SCALE を乗算し、符号付きバイアス GL_c_BIAS に加算し、範囲 [0,1] に固定します (glPixelTransfer 参照)。
GL_LUMINANCE_ALPHA
各要素は輝度とアルファのペアです。 これは、浮動小数点形式に変換された後、赤、緑、青の輝度値を 3 回レプリケートすることで、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_INVALID_ENUM
target は GL_TEXTURE_2D ではありませんでした。
GL_INVALID_ENUM
format は承認された定数ではありませんでした。
GL_INVALID_ENUM
type は承認された定数ではありませんでした。
GL_INVALID_ENUM
type は GL_BITMAP であり、format は GL_COLOR_INDEX ではありませんでした。
GL_INVALID_VALUE
level が 0 より小さいか、log2 max より大きく、max は GL_MAX_TEXTURE_SIZE の戻り値でした。
GL_INVALID_VALUE
xoffset は -b 未満でした。あるいはr xoffset + widthw - b 超でした。あるいは yoffset は -b 未満でした。あるいは yoffset + heighth - b 超でした。w は GL_TEXTURE_WIDTH です。h は GL_TEXTURE_HEIGHT です。b は、変更中のテクスチャ イメージの GL_TEXTURE_BORDER の幅です。
wh には罫線の幅の 2 倍が含まれることにご注意ください。
GL_INVALID_VALUE
widthb 未満でした。b はテクスチャ配列の罫線の幅です。
GL_INVALID_VALUE
border はゼロでも 1 でもありませんでした。
GL_INVALID_OPERATION
テクスチャ配列は前の glTexImage2D 操作によって定義されませんでした。
GL_INVALID_OPERATION
この関数は、glBegin に対する呼び出しと glEnd に対応する呼び出しの間で呼び出されました。

解説

プリミティブの 2 次元テクスチャリングは glEnableglDisable、引数 GL_TEXTURE_2D の使用により有効になります。 テクスチャリング中、指定のテクスチャ イメージの一部が、有効になっている各プリミティブにマッピングされます。 glTexSubImage2D 関数を使用し、テクスチャリングのために既存の 2 次元テクスチャ イメージの連続サブイメージを指定します。

ピクセルによって参照されるテクセルにより、既存のテクスチャ配列の領域が、xoffsetxoffset (始めと終わりを含める) に 1 を足した x インデックスと、yoffsetyoffset (始めと終わりを含める) に高さ 1 を足した y インデックスに置換されます。 この領域には、最初に指定したテクスチャ配列の範囲外のテクセルを含めることはできません。

ゼロのサブイメージを指定しても何の効果もなく、エラーは生成されません。

テクスチャリングは、色インデックス モードでは効果がありません。

一般的に、テクスチャ イメージは glDrawPixels コマンドのピクセルと同じデータ形式で表すことができますが、GL_STENCIL_INDEX と GL_DEPTH_COMPONENT は使用できません。 glPixelStore モードと glPixelTransfer モードは、glDrawPixels に影響を与える正確な方法でテクスチャ イメージに影響します。

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

glGetTexImage

引数 GL_TEXTURE_2D を含む glIsEnabled

必要条件

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

関連項目

glCopyTexImage1D

glCopyTexImage2D

glCopyTexSubImage1D

glCopyTexSubImage2D

glDrawPixels

glEnable

glFog

glGetTexImage

glIsEnabled

glPixelStore

glPixelTransfer

glTexEnv

glTexGen

glTexImage1D

glTexImage2D

glTexSubImage1D

glTexImage2D

glTexParameter