glColorSubTableEXT 函数

glColorSubTableEXT 函数指定要替换的目标纹理调色板的一部分。

语法

void WINAPI glColorSubTableEXT(
         GLenum  target,
         GLsizei start,
         GLsizei count,
         GLenum  format,
         GLenum  type,
   const GLvoid  *data
);

参数

目标

要更改调色板的目标调色板纹理。 必须是TEXTURE_1D或TEXTURE_2D。

start

要更改调色板的起始调色板索引项。

计数

要从 开始开始更改调色板的调色板索引项数。 count 参数确定更改的调色板索引项的范围。

format

像素数据的格式。 接受以下符号常量。

含义
GL_RGBA
每个像素按以下顺序排列四个分量:红色、绿色、蓝色、alpha。 RGBA 格式以这种方式确定:
  1. glColorSubTableEXT 函数将浮点值直接转换为具有未指定精度的内部格式。 带符号整数值以线性方式映射到内部格式,使最正的可表示整数值映射到 1.0,而最负的可表示值映射到 -1.0。 无符号整数数据同样映射:最大整数值映射到 1.0,零映射到 0.0。
  2. glColorSubTableEXT 函数将生成的颜色值乘以GL_c_SCALE,并将其添加到GL_c_BIAS,其中 c 是相应颜色组件的红色、绿色、蓝色和 ALPHA。 结果固定到 [0,1]。
  3. 如果GL_MAP_COLOR为 TRUEglColorSubTableEXT 按查阅表的大小缩放每个颜色组件GL_PIXEL_MAP_c_TO_c,然后将组件替换为它在该表中引用的值; c 分别为 R、G、B 或 A。
  4. glColorSubTableEXT 函数通过将当前光栅位置 z 坐标和纹理坐标附加到每个像素,然后将 xy 窗口坐标分配给第 n 个片段,从而将生成的 RGBA 颜色转换为片段,以便该 x? = xrn + mod 宽度
    y? = yrn +/width
    其中, (xryr ) 是当前光栅位置。
  5. 然后,这些像素片段将像光栅化点、线条或多边形生成的片段一样进行处理。 glColorSubTableEXT 函数在将片段写入 framebuffer 之前,应用纹理映射、雾和所有片段操作。
GL_RED
每个像素都是一个红色分量。
glColorSubTableEXT 函数将此组件转换为内部格式的方式与 RGBA 像素的红色分量相同,然后将其转换为绿色和蓝色设置为 0.0 的 RGBA 像素,alpha 设置为 1.0。 在此转换后,该像素将被视为已读为 RGBA 像素。
GL_GREEN
每个像素都是一个绿色组件。
glColorSubTableEXT 函数以 RGBA 像素的绿色分量的方式将此组件转换为内部格式,然后将其转换为红色和蓝色设置为 0.0 的 RGBA 像素,alpha 设置为 1.0。 在此转换后,该像素将被视为已读为 RGBA 像素。
GL_BLUE
每个像素都是一个蓝色分量。
glColorSubTableEXT 函数以 RGBA 像素的蓝色分量的方式将此组件转换为内部格式,然后将它转换为红色和绿色设置为 0.0 的 RGBA 像素,alpha 设置为 1.0。 在此转换后,该像素将被视为已读为 RGBA 像素。
GL_ALPHA
每个像素都是单个 alpha 分量。
glColorSubTableEXT 函数将此组件转换为内部格式的方式与 RGBA 像素的 alpha 分量相同,然后将其转换为红色、绿色和蓝色设置为 0.0 的 RGBA 像素。 在此转换后,该像素将被视为已读为 RGBA 像素。
GL_RGB
每个像素是按以下顺序排列的三个分量组:红色、绿色、蓝色。
glColorSubTableEXT 函数以与 RGBA 像素的红色、绿色和蓝色分量相同的方式将每个组件转换为内部格式。 颜色三重转换为 RGBA 像素,alpha 设置为 1.0。 在此转换后,该像素将被视为已读为 RGBA 像素。
GL_BGR_EXT
每个像素是按以下顺序排列的三个分量组:蓝色、绿色、红色。
GL_BGR_EXT提供一种格式,该格式与Windows独立于设备的位图的内存布局匹配, (DIB) 。 因此,应用程序可以使用Windows函数调用和 OpenGL 像素函数调用相同的数据。
GL_BGRA_EXT
每个像素按以下顺序排列四个分量:蓝色、绿色、红色、alpha。
GL_BGRA_EXT提供了一种与Windows独立于设备的位图 (位图) 的内存布局匹配的格式。 因此,应用程序可以使用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

指向调色板纹理数据的指针。 数据被视为调色板项的 1D 纹理调色板项的单个像素。

返回值

此函数不返回值。

错误代码

glGetError 函数可以检索以下错误代码。

名称 含义
GL_INVALID_VALUE
startcount 是无效的整数。
GL_INVALID_ENUM
目标格式类型 不是接受的值。
GL_INVALID_VALUE
在对 glBegin 的调用和 对 glEnd 的相应调用之间调用了该函数。

注解

glColorSubTableEXT 函数指定要替换的当前目标纹理调色板的部分。 与 glColorTableEXT 不同,不能将 目标 参数指定为代理纹理调色板。

注意

glColorSubTableEXT 函数是一个扩展函数,不是标准 OpenGL 库的一部分,而是GL_EXT_paletted_texture扩展的一部分。 若要检查 OpenGL 的实现是否支持 glColorSubTableEXT,请调用 glGetString (GL_EXTENSIONS) 。 如果返回GL_EXT_paletted_texture,则支持 glColorSubTableEXT 。 若要获取扩展函数的函数地址,请调用 wglGetProcAddress

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Gl.h

另请参阅

glBegin

glColorTableEXT

glEnd

glGetColorTableEXT

glGetColorTableParameterfvEXT

glGetColorTableParameterivEXT

glGetString

wglGetProcAddress