OpenGLut开发入门系列教程4:彩色多边形

系列教程索引:OpenGLut开发入门系列教程索引

上一篇:OpenGLut开发入门系列教程3:基本图形

上一篇的多边形是黑底白色的,本篇来给其涂涂色。

首先函数基本的架构是:

flow

在main函数中glut*Func()的参数为回调函数,需要在main函数外独立实现。

重要的是四个回调函数:

  • initGL,初始化函数
  • reshapeGL,尺寸调整函数,当窗口的尺寸发生变化时调用此函数重新绘图
  • keyboard,捕获键盘输入并处理
  • displayGL,将想要显示的图像绘制出来的函数

其他函数说明见OpenGL函数功能说明系列

可以看出,OpenGL默认绘图颜色为白色,那么如果我需要其他颜色呢?

只需要添加部分代码(三角形):

渲染一种颜色

1
2
3
4
5
6
glBegin(GL_TRIANGLES);//图像绘制部分
glColor3f(0.5f,0.5f,0.5f);
glVertex3f(0.0f,1.0f,0.0f);//点A(x,y,z)
glVertex3f(-1.0f,-1.0f,0.0f);//点B
glVertex3f(1.0f,-1.0f,0.0f);//点C
glEnd();

渲染三种颜色:

1
2
3
4
5
6
7
8
glBegin(GL_TRIANGLES);//图像绘制部分
glColor3f(1.0f,0.0f,0.0f); // Set The Color To Red
glVertex3f(0.0f,1.0f,0.0f);//点A(x,y,z)
glColor3f(0.0f,1.0f,0.0f); // Set The Color To Green
glVertex3f(-1.0f,-1.0f,0.0f);//点B
glColor3f(0.0f,0.0f,1.0f); // Set The Color To Blue
glVertex3f(1.0f,-1.0f,0.0f);//点C
glEnd();

效果:

color

再加一个四边形:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
glTranslatef(-1.5f,0.0f,-6.0f);//平移

glBegin(GL_TRIANGLES);//图像绘制部分
glColor3f(1.0f,0.0f,0.0f); // 红色
glVertex3f(0.0f,1.0f,0.0f);//点A(x,y,z)
glColor3f(0.0f,1.0f,0.0f); // 绿色
glVertex3f(-1.0f,-1.0f,0.0f);//点B
glColor3f(0.0f,0.0f,1.0f); // 蓝色
glVertex3f(1.0f,-1.0f,0.0f);//点C
glEnd();
glTranslatef(3.0f,0.0f,0.0f); // 右移

// 绘制正方形
glColor3f(0.5f,0.5f,1.0f); // 蓝色
glBegin(GL_QUADS); // 开始绘图
glVertex3f(-1.0f, 1.0f, 0.0f); // 左上
glVertex3f( 1.0f, 1.0f, 0.0f); // 右上
glVertex3f( 1.0f,-1.0f, 0.0f); // 右下
glVertex3f(-1.0f,-1.0f, 0.0f); // 左下
glEnd(); // 结束

效果为:

result

完整源码在OpenGL_Freshman下的OpenGLut的4中。

下一篇:OpenGLut开发入门系列教程5:图像旋转