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 格式: - glColorSubTableEXT 函数将浮点值直接转换为具有未指定精度的内部格式。 带符号整数值以线性方式映射到内部格式,以便最正的可表示整数值映射到 1.0,而最负的可表示值映射到 -1.0。 无符号整数数据的映射方式类似:最大整数值映射到 1.0,零映射到 0.0。
- glColorSubTableEXT 函数将生成的颜色值乘以GL_c_SCALE,并将其添加到GL_c_BIAS,其中 c 是相应颜色分量为 RED、GREEN、BLUE 和 ALPHA。 结果被限制在 [0,1] 范围内。
- 如果GL_MAP_COLOR为 TRUE, 则 glColorSubTableEXT 按查找表GL_PIXEL_MAP_c_TO_c的大小缩放每个颜色分量,然后将该组件替换为该表中引用的值; c 分别为 R、G、B 或 A。
-
glColorSubTableEXT 函数通过将当前光栅位置 z 坐标和纹理坐标附加到每个像素,然后将 x 和 y 窗口坐标分配给第 n 个片段,使x?
=
xr + n mod width
y? = yr +n / width
其中, (xr 、 yr ) 是当前光栅位置。 - 然后,这些像素片段的处理方式与光栅化点、线或多边形生成的片段一样。 glColorSubTableEXT 函数在将片段写入 framebuffer 之前应用纹理映射、迷雾和所有片段操作。
- GL_RED
每个像素都是单个红色分量。
glColorSubTableEXT 函数将此组件转换为内部格式,其方式与 RGBA 像素的红色分量相同,然后将其转换为绿色和蓝色设置为 0.0、alpha 设置为 1.0 的 RGBA 像素。 此转换后,将像将其读取为 RGBA 像素一样处理像素。- GL_GREEN
每个像素都是单个绿色分量。
glColorSubTableEXT 函数将此组件转换为内部格式,其方式与 RGBA 像素的绿色分量相同,然后将其转换为 RGBA 像素,其中红色和蓝色设置为 0.0,alpha 设置为 1.0。 此转换后,将像将其读取为 RGBA 像素一样处理像素。- GL_BLUE
每个像素都是一个蓝色分量。
glColorSubTableEXT 函数将此组件转换为内部格式,其方式与 RGBA 像素的蓝色分量相同,然后将其转换为红绿设置为 0.0、alpha 设置为 1.0 的 RGBA 像素。 此转换后,将像将其读取为 RGBA 像素一样处理像素。- GL_ALPHA
每个像素都是一个 alpha 分量。
glColorSubTableEXT 函数以与 RGBA 像素的 alpha 分量相同的方式将此组件转换为内部格式,然后将其转换为将红色、绿色和蓝色设置为 0.0 的 RGBA 像素。 此转换后,将像将其读取为 RGBA 像素一样处理像素。- GL_RGB
每个像素都是一组三个分量,按以下顺序排列:红色、绿色、蓝色。
glColorSubTableEXT 函数将每个分量转换为内部格式,其方式与 RGBA 像素的红色、绿色和蓝色分量相同。 颜色三重转换为 alpha 设置为 1.0 的 RGBA 像素。 此转换后,将像将其读取为 RGBA 像素一样处理像素。- GL_BGR_EXT
每个像素是一组三个分量,按以下顺序排列:蓝色、绿色、红色。
GL_BGR_EXT提供的格式与 windows 设备无关位图 (DDB) 的内存布局相匹配。 因此,应用程序可以通过 Windows 函数调用和 OpenGL 像素函数调用使用相同的数据。- GL_BGRA_EXT
每个像素都是一组四个分量,按以下顺序排列:蓝色、绿色、红色、alpha。
GL_BGRA_EXT提供的格式与与 windows 设备无关的位图 (DDB) 的内存布局相匹配。 因此,应用程序可以通过 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
-
指向调色板纹理数据的指针。 数据被视为调色板条目的一维纹理调色板项的单个像素。
返回值
此函数不返回值。
错误代码
glGetError 函数可以检索以下错误代码。
名称 | 含义 |
---|---|
|
start 或 count 是无效整数。 |
|
target、 format 或 type 不是接受的值。 |
|
函数是在 对 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 [仅限桌面应用] |
标头 |
|