`
gongzhq
  • 浏览: 22809 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

第三课:添加颜色

 
阅读更多


 

上一课中我教给您三角形和四边形的绘制方法。这一课我将教您给三角形和四边形添加两种不同类型的着色方法。使用单调着色(Flat coloring)给四边形涂上固定的一种颜色。使用平滑着色(Smooth coloring)将三角形的三个顶点的不同颜色混合在一起,创建漂亮的色彩混合。
我们只要修改第二课中的NeHeWidget类中的paintGL()函数就可以了。
 

nehewidget.cpp

/*NeHeWidget类
由nehewidget.cpp 展开。*/

void NeHeWidget::paintGL()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glLoadIdentity();
    glTranslatef( -1.5,  0.0, -6.0 );
    glBegin( GL_TRIANGLES );

        /*红色。
        如果您还记得上节课的内容,这段代码在屏幕的左半部分绘制三角形。这一行
        代码是我们第一次使用命令glColor3f( r, g, b )。括号中的三个参数依次是
        红、绿、蓝三色分量。取值范围可以从0.0到1.0。类似于以前所讲的清除屏
        幕背景命令。我们将颜色设为红色(纯红色,无绿色,无蓝色)。*/
        glColor3f( 1.0, 0.0, 0.0 );
   
        /*上顶点。
        接下来的一行代码设置三角形的第一个顶点(三角形的上顶点),并使用当
        前颜色(红色)来绘制。从现在开始所有的绘制的对象的颜色都是红色,直到
        我们将红色改变成别的什么颜色。*/
        glVertex3f(  0.0,  1.0,  0.0 );

        /*绿色。*/
        glColor3f( 0.0, 1.0, 0.0 );

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

        /*蓝色。*/
        glColor3f( 0.0, 0.0, 1.0 );

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

    /*glEnd()出现后,三角形将被填充。但是因为每个顶点有不同的颜色,因此
    看起来颜色从每个角喷出,并刚好在三角形的中心汇合,三种颜色相互混合。这
    就是平滑着色。*/
    glEnd();

    glTranslatef(  3.0,  0.0,  0.0 );

    /*一次性将颜色设置为蓝色。
    现在我们绘制一个单调着色——蓝色的正方形。最重要的是要记住,设置当前色
    之后绘制的所有东东都是当前色的。以后您所创建的每个工程都要使用颜色。即
    便是在完全采用纹理贴图的时候,glColor3f仍旧可以用来调节纹理的色调。等
    等...,以后再说吧。
    我们必须要做的事只需将颜色一次性的设为我们想采用的颜色(本例采用蓝
    色),然后绘制场景。每个顶点都是蓝色的,因为我们没有告诉OpenGL要改变
    顶点的颜色。最后的结果是.....全蓝色的正方形。再说一遍,顺时针绘制的正方
    形意味着我们所看见的是四边形的背面。*/
    glColor3f( 0.5, 0.5, 1.0 );

    glBegin( GL_QUADS );
        glVertex3f( -1.0,  1.0,  0.0 );
        glVertex3f(  1.0,  1.0,  0.0 );
        glVertex3f(  1.0, -1.0,  0.0 );
        glVertex3f( -1.0, -1.0,  0.0 );
    glEnd();
}  

 在这一课中,我试着尽量详细的解释如何为您的OpenGL多边形添加单调和平滑的着色效果的步骤。改改代码中的红绿蓝分量值,看看最后有什么样的结果。

  • 大小: 12.1 KB
分享到:
评论

相关推荐

    第五课:文件管理之删除目录(RD)命令的详解.docx

    第3课:命令格式的分类、命令行的编辑与窗口的美化 第4课:创建目录之MD命令的详解 第5课:文件管理之删除目录(RD)命令的详解 第6课:显示文件目录之DIR命令的讲解 第7课:文件管理之文件的复制--copy命令 第8课:...

    C# Nehe OpenGL 第三课 添加颜色

    C# Nehe OpenGL 第三课 添加颜色

    VC学习大纲 VC学习讲义

    第三课: 讲述MFC AppWizard的原理与MFC程序框架的剖析。AppWizard是一个原代码生成工具,是计算机辅助程序设计软件,Winmain在MFC程序中是如何从源程序中被隐藏的,theApp全局变量是如何被分配的,MFC框架中的几个类...

    scratch3.0编程_30初中级+ 5 级节高级课.zip

    第01课 危险来临 入侵危机 "1. 认识编程软件 2. 添加、删除角色 3. 控制角色的简单移动" 1.外观指令:角色切换 2.运动指令:角色移动 3.控制指令:重复移动 第02课 协助逃脱 "1. 广播的基本应用 2. 角色说话内容的...

    Udemy_SL_MaterialDesign:Udemy的SlideNerd课程https

    Udemy_SL_MaterialDesign Udemy的SlideNerd课程 第一次提交: 第1课:设置材料设计第2课:在材料设计中使用颜色第3课:向您的应用程序添加工具栏讲座4:自定义工具栏外观

    少年宫计算机教学设计.doc

    五、成果篮: 第3课 填充颜色 教学目标:学习画彩色的图形。 教学时间:1课时 教学过程: 一、画气球、太阳 1、选用"椭圆"工具中的填充模式,可以画出彩色的气球和太阳。 2、用同样的方法画出另外两只气球。 3、...

    LearningWebGPU:受LearningWebGL.com启发的WebGPU教程。 同时使用WGSL和GLSLSPIR-V

    LearningWebGPU 教程 ... glsl-spirv 分支使用 GLSL->SPIR-V ...第 2 课 - 添加颜色 - 完结 第 3 课 - 动起来 [教程] 第 4 课 - 真正的 3D 物体 [教程] 第 5 课 - 引入纹理 [教程] 第 6 课 - 键盘输入和纹理过滤 [教程]

    OPenGL编程书籍

    3.添加颜色: 作为第二课的扩展,我将叫你如何使用颜色。你将理解两种着色模式,在左图中,三角形用的是光滑着色,四边形用的是平面着色。 注意三角形上的颜色是如何混合的。 颜色为OpenGlL 工程增加很多。通过理解...

    Nehe的OpenGL教程电子书

    添加颜色: 作为第二课的扩展,我将叫你如何使用颜色。你将理解两种着色模式,在左图中,三角形用的是光滑着色,四边形用的是平面着色。 注意三角形上的颜色是如何混合的。 颜色为OpenGlL 工程增加很多。通过理解...

    (精校版)计算机应用基础第EXCEl作业操作题.doc

    完整word版,计算机应用基础第EXCEl作业操作题 编辑整理: 尊敬的读者朋友们:... (精校版)计算机应用基础第EXCEl作业操作题全文共4页,当前为第3页。 (精校版)计算机应用基础第EXCEl作业操作题全文共4页,当前为第4页。

    百例课堂.DELPHI.7编程入门篇

    第3课 Delphi对窗口与界面的设计应用 实例8 设计一个透明窗体 实例9 设计可以弹出系统时间对话框的程序 实例10 设计可显示圆形的程序 实例11 设计具有折叠功能的树状列表 实例12 制作可以浏览照片的程序 实例13 设计...

    ppt制作培训教程.doc

    然后再依次复 制粘贴第二页、第三页...;对图形可以单复制,并在幻灯片中进行位置和大小的调整; 图表、公式等也依此法复制到演示文稿中;最后对建好的演示文稿进行总体调整,平衡 文字量和文字的大小。 2) 幻灯片的...

    makecode-arcade-turtle-logo-lesson4

    第三步 ** 跟着** 在“将乌龟的笔颜色设置为▢⇠”内部,选择“▢”,然后选择红色。 现在添加一个“ myTurtle前进25个步骤”块以查看新的红色轨迹。 turtle.showTurtle() turtle.setPenColor

    (完整版)python教案.doc

    结合两节课学过的知识,修改程序2,使之实现如下功能: 提示: color()函数——设置颜色 write()函数——设置字体字号 第2课时 控制"海龟"移动 一、教学目标 1、了解常量、变量、表达式、赋值; 2、掌握变量的命名、...

    (完整版)python教案(1).doc

    结合两节课学过的知识,修改程序2,使之实现如下功能: 提示: color()函数——设置颜色 write()函数——设置字体字号 第2课时 控制"海龟"移动 一、教学目标 1、了解常量、变量、表达式、赋值; 2、掌握变量的命名、...

    网页与Web程序设计 课件 ppt 机械工业出版社 part1

    第三部分为图形动画篇(第12~15章),介绍目前最常用的网页制作辅助工具Fireworks 8和Flash 8,并给出一些制作实例。  网页设计是一门实践性很强的课程,实践是学好本课程的重要环节。为此我们编写了与其配套的...

    研华PCI-1761接点检测

    Me.Caption = "工控第一课 研华PCI-1761接点检测" Label1.Caption = "151" End Sub Private Sub Command1_Click() '十进制转二进制 If Command3.Caption = "停止演示" Then Command3_Click '如果随机演示正在进行...

Global site tag (gtag.js) - Google Analytics