学习于OpenGL入门必备文档
两种颜色模式:1.RGBA模式 2.颜色索引模式
RGBA
......................................
RGBA 模式中,每一个像素会保存以下数据:R 值(红色分量)、G 值(绿色分量)、B 值(蓝色分量)和 A 值(alpha 分 量)。其中红、绿、蓝三种颜色相组合,就可以得到我们所需要的各种颜色,而 alpha 不直接影响颜色,它将留待以后介绍。
在 RGBA 模式下选择颜色是十分简单的事情,只需要一个函数就可以搞定。
glColor*系列函数可以用于设置颜色,其中三个参数的版本可以指定 R、G、B 的值,而 A 值采用默认;四个参数的版本可 以分别指定 R、G、B、A 的值。
例如:
void glColor3f(GLfloat red, GLfloat green, GLfloat blue);
void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
将浮点数作为参数,其中 0.0 表示不使用该种颜色,而 1.0 表示将该种颜色用到最多。
例如:
glColor3f(1.0f, 0.0f, 0.0f); 表示不使用绿、蓝色,而将红色使用最多,于是得到最纯净的红色。
glColor3f(0.0f, 1.0f, 1.0f); 表示使用绿、蓝色到最多,而不使用红色。混合的效果就是浅蓝色。
glColor3f(0.5f, 0.5f, 0.5f); 表示各种颜色使用一半,效果为灰色。
注意:浮点数可以精确到小数点后若干位,这并不表示计算机就可以显示如此多种颜色。实际上,计算机可以显示的颜色种 数将由硬件决定。如果 OpenGL 找不到精确的颜色,会进行类似“四舍五入”的处理。
注意:glColor 系列函数,在参数类型不同时,表示“最大”颜色的值也不同。 采用 f 和 d 做后缀的函数,以 1.0 表示最大的使用。 采用 b 做后缀的函数,以 127 表示最大的使用。 采用 ub 做后缀的函数,以 255 表示最大的使用。 采用 s 做后缀的函数,以 32767 表示最大的使用。 采用 us 做后缀的函数,以 65535 表示最大的使用。
void myDisplay(void) {
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0f, 1.0f, 1.0f);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);