次の方法で共有


glColorTableEXT 関数

glColorTableEXT 関数は、対象となるパレット テクスチャのパレットの形式とサイズを指定します。

構文

void WINAPI glColorTableEXT(
         GLenum  target,
         GLenum  internalFormat,
         GLsizei width,
         GLenum  format,
         GLenum  type,
   const GLvoid  *data
);

パラメーター

target

パレットを変更するターゲット テクスチャ。 TEXTURE_1D、TEXTURE_2D、PROXY_TEXTURE_1D、またはPROXY_TEXTURE_2Dである必要があります。

internalFormat

パレットの内部形式と解像度。 このパラメーターは、次のいずれかのシンボリック値を想定できます。

定数 基本書式 R ビット G ビット B ビット ビット
GL_R3_G3_B2 GL_RGB 3 3 2
GL_RGB4 GL_RGB 4 4 4
GL_RGB5 GL_RGB 5 5 5
GL_RGB8 GL_RGB 8 8 8
GL_RGB10 GL_RGB 10 10 10
GL_RGB12 GL_RGB 12 12 12
GL_RGB16 GL_RGB 16 16 16
GL_RGBA2 GL_RGBA 2 2 2 2
GL_RGBA4 GL_RGBA 4 4 4 4
GL_RGB5_A1 GL_RGBA 5 5 5 1
GL_RGBA8 GL_RGBA 8 8 8 8
GL_RG10_A2 GL_RGBA 10 10 10 2
GL_RGB12 GL_RGBA 12 12 12 12
GL_RGBA16 GL_RGBA 16 16 16 16

width

パレットのサイズ。 整数 n の場合、2n = 1 にする必要があります。

format

ピクセル データの形式。 次のシンボリック定数を使用できます。

説明
GL_RGBA
各ピクセルは、赤、緑、青、アルファの 4 つのコンポーネントのグループです。 RGBA 形式は、次の方法で決定されます。
  1. glColorTableEXT 関数は、浮動小数点値を、精度が指定されていない内部形式に直接変換します。 符号付き整数値は、最も正の表現可能な整数値が 1.0 にマップされ、最も負の表現可能な整数値が -1.0 にマップされるように、内部形式に線形的にマップされます。 符号なし整数データも同様にマップされます。最大の整数値は 1.0 に、ゼロは 0.0 にマップされます。
  2. glColorTableEXT 関数は、結果の色の値にGL_c_SCALEを乗算し、それらをGL_c_BIASに追加します。ここで、c はそれぞれの色コンポーネントの RED、GREEN、BLUE、ALPHA です。 結果は[0,1]の範囲にクランプされます。
  3. GL_MAP_COLORが TRUE の場合、 glColorTableEXT は各色コンポーネントを参照テーブルのGL_PIXEL_MAP_c_TO_cのサイズでスケーリングし、そのコンポーネントをそのテーブル内で参照する値に置き換えます。 c はそれぞれ R、G、B、または A です。
  4. glColorTableEXT 関数は、現在のラスター位置 z 座標とテクスチャ座標を各ピクセルにアタッチし、xy のウィンドウ座標を x のように n番目のフラグメントに割り当てることで、結果の RGBA 色をフラグメントに変換します。 = xr + n mod width
    Y。 = yr +n / width
    ここで(xr , yr ) は現在のラスター位置です。
  5. これらのピクセル フラグメントは、ポイント、線、またはポリゴンをラスタライズすることによって生成されたフラグメントと同様に処理されます。 glColorTableEXT 関数は、フレームバッファーにフラグメントを書き込む前に、テクスチャ マッピング、霧、およびすべてのフラグメント操作を適用します。
GL_RED
各ピクセルは 1 つの赤いコンポーネントです。
glColorTableEXT 関数は、RGBA ピクセルの赤のコンポーネントと同じ方法でこのコンポーネントを内部形式に変換し、緑と青を 0.0 に設定し、アルファを 1.0 に設定した RGBA ピクセルに変換します。 この変換後、ピクセルは RGBA ピクセルとして読み取られたかのように扱われます。
GL_GREEN
各ピクセルは 1 つの緑色のコンポーネントです。
glColorTableEXT 関数は、RGBA ピクセルの緑のコンポーネントと同じ方法でこのコンポーネントを内部形式に変換し、赤と青が 0.0 に設定され、アルファが 1.0 に設定された RGBA ピクセルに変換します。 この変換後、ピクセルは RGBA ピクセルとして読み取られたかのように扱われます。
GL_BLUE
各ピクセルは 1 つの青いコンポーネントです。
glColorTableEXT 関数は、RGBA ピクセルの青のコンポーネントと同じ方法でこのコンポーネントを内部形式に変換し、赤と緑が 0.0 に設定され、アルファが 1.0 に設定された RGBA ピクセルに変換します。 この変換後、ピクセルは RGBA ピクセルとして読み取られたかのように扱われます。
GL_ALPHA
各ピクセルは 1 つのアルファ コンポーネントです。
glColorTableEXT 関数は、RGBA ピクセルのアルファ コンポーネントと同じ方法でこのコンポーネントを内部形式に変換し、赤、緑、青が 0.0 に設定された RGBA ピクセルに変換します。 この変換後、ピクセルは RGBA ピクセルとして読み取られたかのように扱われます。
GL_RGB
各ピクセルは、赤、緑、青の 3 つのコンポーネントのグループです。
glColorTableEXT 関数は、RGBA ピクセルの赤、緑、青のコンポーネントと同じ方法で、各コンポーネントを内部形式に変換します。 カラー トリプルは、アルファが 1.0 に設定された RGBA ピクセルに変換されます。 この変換後、ピクセルは RGBA ピクセルとして読み取られたかのように扱われます。
GL_BGR_EXT
各ピクセルは、青、緑、赤の 3 つのコンポーネントのグループです。
GL_BGR_EXTは、Windows デバイスに依存しないビットマップ (DIB) のメモリ レイアウトに一致する形式を提供します。 したがって、アプリケーションは、Windows 関数呼び出しと OpenGL ピクセル関数呼び出しで同じデータを使用できます。
GL_BGRA_EXT
各ピクセルは、青、緑、赤、アルファの 4 つのコンポーネントのグループです。
GL_BGRA_EXTは、Windows デバイスに依存しないビットマップ (DIB) のメモリ レイアウトに一致する形式を提供します。 したがって、アプリケーションは、Windows 関数呼び出しと OpenGL ピクセル関数呼び出しで同じデータを使用できます。

type

データのデータ型。 次のシンボリック定数を使用できます:GL_UNSIGNED_BYTE、GL_BYTE、GL_UNSIGNED_SHORT、GL_SHORT、GL_UNSIGNED_INT、GL_INT、およびGL_FLOAT。

次の表は、 パラメーターの有効な定数の意味をまとめたものです。

説明
GL_UNSIGNED_BYTE
符号なし 8 ビット整数
GL_BYTE
符号付き 8 ビット整数
GL_UNSIGNED_SHORT
符号なし 16 ビット整数
GL_SHORT
符号付き 16 ビット整数
GL_UNSIGNED_INT
符号なし 32 ビット整数
GL_INT
32-bit integer
GL_FLOAT
単精度浮動小数点数値

data

パレット化されたテクスチャ データへのポインター。 データは、パレット エントリの 1-D テクスチャ パレット エントリの単一ピクセルとして扱われます。

戻り値

この関数は値を返しません。

エラー コード

glGetError 関数では、次のエラー コードを取得できます。

名前 意味
GL_INVALID_VALUE
width が無効な整数でした。
GL_INVALID_ENUM
targetinternalFormatformat、または type が受け入れられた値ではありません。
GL_INVALID_OPERATION
glBegin の呼び出しと glEnd の対応する呼び出しの間に関数が呼び出されました。

解説

パレット テクスチャは、色のパレットと、パレットのカラー エントリ (カラー テーブル) のインデックスで構成される画像データのセットで定義されます。

glColorTableEXT 関数は、対象となるテクスチャのテクスチャ パレットを指定します。 メモリから データ を取得し、各パレット エントリが 1-D テクスチャの 1 ピクセルであるかのようにデータを変換します。 glColorTableEXT 関数は、データを開梱して変換し、指定された形式にできるだけ近い内部形式に変換します。

パレットの がテクスチャ データ内のカラー インデックスの範囲を超える場合、一部のパレット エントリは使用されません。 パレットの がテクスチャ データ内のカラー インデックスの範囲より小さい場合、テクスチャ データの最も重要なビットは無視され、パレットにアクセスするときにインデックス内の適切なビット数のみが使用されます。 PROXY_TEXTURE_1DまたはPROXY_TEXTURE_2Dを使用してプロキシ ターゲット を指定すると、プロキシ テクスチャのパレットのサイズが変更され、そのパラメーターは設定されますが、データは転送またはアクセスされません。

ターゲット パラメーターがGL_PROXY_TEXTURE_1DまたはGL_PROXY_TEXTURE_2Dであり、実装で書式またはに指定された値がサポートされていない場合、glColorTableEXT は要求されたカラー テーブルの作成に失敗する可能性があります。 この場合、カラー テーブルは空であり、取得されるすべてのパラメーターは 0 になります。 OpenGL で特定のカラー テーブルの形式とサイズがサポートされているかどうかを確認するには、プロキシ ターゲットで glColorTableEXT を呼び出し、 glGetColorTableParameterivEXT または glGetColorTableParameterfvEXT を呼び出して、width パラメーターが glColorTableEXT によって設定されたと一致するかどうかを判断します。 取得した幅が 0 の場合、 glColorTable によるカラー テーブルの要求は失敗しました。 取得した幅が 0 でない場合は、実際のターゲットで glColorTable を呼び出し、TEXTURE_1DまたはTEXTURE_2Dしてカラー テーブルを設定できます。

注意

glColorTableEXT 関数は、標準の OpenGL ライブラリの一部ではありませんが、GL_EXT_paletted_texture拡張機能の一部である拡張関数です。 OpenGL の実装で glColorTableEXT がサポートされているかどうかをチェックするには、glGetString(GL_EXTENSIONS) を呼び出します。 GL_EXT_paletted_textureを返す場合は、 glColorTableEXT がサポートされます。 拡張関数の関数アドレスを取得するには、 wglGetProcAddress を呼び出します。

glColorTableEXT 関数で指定された実際のカラー テーブル データを取得するには、glGetColorTableEXT を呼び出します。 glColorTableEXT 関数で指定されたカラー テーブルのパラメーター (書式など) を取得するには、glGetColorTableParameterivEXT 関数または glGetColorTableParameterfvEXT 関数を呼び出します。

必要条件

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

関連項目

glBegin

glColorSubTableEXT

glEnd

glGetColorTableEXT

glGetColorTableParameterfvEXT

glGetColorTableParameterivEXT

wglGetProcAddress