OpenGL 编程/基础/颜色
外观
在计算机图形学中,有很多方法可以指定颜色,但最简单和最广泛使用的方法之一是 RGB 颜色模型。RGB 代表红色、绿色和蓝色:加色三原色。每种颜色都被赋予一个值,在 OpenGL 中通常是 0 到 1 之间的值。1 表示尽可能多的该颜色,0 表示没有该颜色。我们可以将这三种颜色混合在一起,以获得完整的颜色范围,如左侧所示。
例如,纯红色表示为 (1, 0, 0),纯蓝色表示为 (0, 0, 1)。白色是三种颜色的混合,表示为 (1, 1, 1),而黑色是三种颜色的缺失,表示为 (0, 0, 0)。黄色是红色和绿色的混合,如 (1, 1, 0)。橙色是黄色中带有一些绿色,表示为 (1, 0.5, 0)。
有关 RGB 的更多信息,请参阅 维基百科条目.
glColor3f() 接受 3 个参数:你想要的颜色的红色、绿色和蓝色分量。在使用 glColor3f 之后,你绘制的所有内容都将以该颜色显示。例如,考虑以下显示函数
void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor3f(0.5f, 0.0f, 1.0f); // (0.5, 0, 1) is half red and full blue, giving dark purple. glBegin(GL_QUADS); glVertex2f(-0.75, 0.75); glVertex2f(-0.75, -0.75); glVertex2f(0.75, -0.75); glVertex2f(0.75, 0.75); glEnd(); glutSwapBuffers(); }
这将输出一个令人愉快的紫色矩形/四边形。
尝试使用 glColor3f(),传入不同的参数。看看你能否创建深绿色、浅灰色或青色。
glColor3f 可以调用在 glBegin 和 glEnd 之间。当以这种方式使用时,它可以用于为每个顶点设置自己的颜色。生成的矩形将被以令人愉快的颜色渐变着色,如右侧所示。
void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_QUADS); glColor3f(0.5f, 0.0f, 1.0f); // make this vertex purple glVertex2f(-0.75, 0.75); glColor3f(1.0f, 0.0f, 0.0f); // make this vertex red glVertex2f(-0.75, -0.75); glColor3f(0.0f, 1.0f, 0.0f); // make this vertex green glVertex2f(0.75, -0.75); glColor3f(1.0f, 1.0f, 0.0f); // make this vertex yellow glVertex2f(0.75, 0.75); glEnd(); glutSwapBuffers(); }