NeHe03课 添加颜色

这篇的主要内容是上一篇中的三角形和四边形分别添加上颜色。

在OpenGL中,设置当前绘制颜色是非常简单的,只需要调用glColor3f(R,G,B),其中三个参数都是0.0~1.0之间的浮点数,分别表示颜色的红,绿,蓝成分。

好了,我们重新写display函数如下:

void display() {

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //

    glLoadIdentity();

    

    glTranslatef(-1.5f, 0.0f, -6.0f);// 三角形和四边形为了看起来小一点,在Z轴上做了6个单位的平移

    glBegin(GL_TRIANGLES); //开始画三角形

    glColor3f(1.0f,0.0f,0.0f);//设置当前颜色成红色

    glVertex3f( 0.0f1.0f, 0.0f);//顶点

    glColor3f(0.0f,1.0f,0.0f);//设置当前颜色成绿色

    glVertex3f(-1.0f, -1.0f, 0.0f);//左下角顶点

    glColor3f(0.0f,0.0f,1.0f);//设置当前颜色成蓝色

    glVertex3f( 1.0f, -1.0f, 0.0f);//右下角顶点

    glEnd();//结束画三角形

    

    glTranslatef(3.0f, 0.0f, 0.0f);

    // or

    // glLoadIdentity();

    // glTranslatef(1.5f, 0.0f, -6.0f);

    glBegin(GL_QUADS); //开始画四边形

    glColor3f(0.5f,0.5f,1.0f);//设置当前颜色成紫蓝色

    glVertex3f(-1.0f1.0f, 0.0f);//坐上顶点

    glVertex3f(-1.0f, -1.0f, 0.0f);//左下顶点

    glVertex3f( 1.0f, -1.0f, 0.0f);//右下顶点

    glVertex3f( 1.0f1.0f, 0.0f);//右上顶点

    glEnd();//结束画四边形

    

    glFlush();

}

运行程序结果如下图所示:



我们会发现三角形,我们只设置了三个顶点的颜色,但是三角形中的其他点也具有了颜色,他们的颜色却跟三个顶点的显式设置的颜色都不相同,可以知道他们的颜色都是介于
两个显式设置颜色的顶点的颜色值之间;而四边形的所有点只有一种颜色。导致上述现象的原因是OpenGL默认调用glShaderModel函数,并将其参数设置为GL_SMOOTH。
glShaderModel函数用于控制OpenGL中绘制指定两点间其他颜色的过渡模式,参数有GL_SMOOTH(默认)和GL_FLAT。OpenGL默认是将指定两点之间的颜色进行插值,因此GL_SMOOTH会出现过度效果,而GL_FLAT则只是以当前的颜色绘制其他所有点。
如果我们在初始化函数InitGL中,显式调用glShaderModel(GL_FLAT),那么上述的display函数结果如下所示:


详细代码在这里。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值