计算机图形学(三)_图元的属性_3_OpenGL颜色函数(上)

OpenGL颜色函数(上)
设定颜色显示模型(color display mode)为RGB:
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
       变量表中的第一个参数指示正在使用单个帧缓存,第二个参数设定RGB模式,即默认模式。我们可以用GLUT_RGB或GLUT_RGBA之一来选择颜色模型。如果要用指向颜色表的索引来指定颜色,则用OpenGL常量GLUT_INDEX取代GLUT_RGB
 OpenGL的RGB和RGBA颜色模型
        多数OpenGL图元使用RGB模式( RGB mode ),它与RGBA模式( RGBA mode )基本相同。 RGB和RGBA的惟一区别在于是否正在颜色调和中使用α值 。在为图元指定一组特殊的颜色时,定义了OpenGL的颜色状态( color state )。当前颜色用于其后定义的图元直到再次改变颜色设定。一种新设定的颜色仅影响在其后定义的对象。
        在RGB模式中,我们指定一种颜色的红色、绿色和蓝色分量。第四个颜色分量即α系数 (alpha coefficient) 是任选的,而四维的颜色描述称为RGBA颜色。第四个颜色参数用来控制图元重叠时的颜色调和。颜色调和的一个重要应用是模拟透明效果。在这样的计算中,α的值与透明性(或不透明性)设定相对应。在RGB(或RGBA)模式中,使用下面的函数来选择当前颜色分量:
glColor* (colorComponents);
        后缀码与glVertex函数中的相同。使用3或4及数值的数据类型码和一个任选的向量后缀一起指定RGB或RGBA模式。该数值数据类型是b(字节)、i(整数)、s(短整数)、f(浮点数)和d(双精度浮点数)以及无符号数值。颜色分量的浮点数范围从0.0到1.0,glColor包括α值的默认颜色分量是(1.0, 1.0, 1.0, 1.0),它将RGB颜色设成白色而α值为1.0。作为例子,下面的语句在RGB模式下使用浮点值将图元当前颜色设定为青色(绿色和蓝色最高强度的混合)。
glColor3f (0.0, 1.0, 1.0);
使用数组指定三个颜色分量,则可按如下方式设定上例中的颜色:
glColor3fv (colorArray);
使用glBegin/glEnd函数对可为单个点位置设定选择的OpenGL颜色。
        颜色分量的整数描述依赖于系统的性能。每像素8位(每分量256等级)的全彩色系统的整数值的范围从0到255。对应的颜色分量浮点数为0.0, 1.0/255.0, 2.0/255.0,...255.0/255.0 = 1.0。在全彩色系统中,我们可以用整数值指定青色的分量:
glColor3i (0, 255, 255);
帧缓存实际上存储整数值,因此用整数指定颜色分量可避免给出浮点数必须进行的转换工作。任何格式指定的颜色值都要按比例转换成特定系统有效位所确定的范围中的整数。

 OpenGL颜色索引模式
OpenGL中也可以用指向颜色表的颜色索引模式来指定颜色。在该模式下,通过指定一个指向颜色表的索引来设定当前颜色:
glIndex* (colorIndex);
参数colorIndex被赋予一个非负整数。该索引值被存储到随后指定的图元对应的帧缓存位置中。我们可以将索引指定为如下数据类型:无符号字节、整数和浮点数。参数colorIndex的数据类型由后缀码ub, s, i, d和f来指定,而颜色表的索引数总是2的指数,如256或1024。每一表项的位数依赖于系统的硬件设施。作为索引模式的颜色指定示例,下面的语句将当前颜色索引设定为196。
glIndexi (196);
所有在这个语句后定义的图元都被赋予颜色表该位置中存储的颜色,直到当前颜色再次改变。
       在OpenGL核心库中没有装载颜色查找表的函数,因为表处理子程序是窗口系统的一部分。有的窗口系统支持多个颜色表,而另外一些则仅有一个颜色表及有限的选择。然而,有一个GLUT子程序可用来与窗口系统进行交互,从而为给定的一个索引位置指定颜色:
glutSetColor (index, red, green, blue);
颜色参数red , green和blue被赋予从0.0到1.0范围中的浮点数。该颜色装入用参数index的值指定的表项中。
       OpenGL核心库扩充了处理另外三个颜色表的子程序。它们是OpenGL成像子集(Imaging Subset )的一个部分。存在这些表中的颜色值可通过各个缓存处理以便用来修改像素值。使用这些表的例子有设定照相机的聚焦效果、从图像中过滤掉某些颜色、增强某种强度或调整亮度、将灰度照片转换成彩色以及显示的反走样等。可利用这些表来改变颜色模型,即将RGB颜色改变为使用另外三个“基色”(如青色、品红和黄色)的颜色描述。
    OpenGL成像子集中使用GL_COLOR_TABLE, GL_POST_CONVOLUTION_COLOR_TABLE或GL_POST_COLOR_MATRIX_COLOR_TABLE名字的特定颜色表用glEnable函数来激活。我们可以用成像子集中的子程序来选择特定的颜色表、设定颜色表的值、复制表的值或指定需要改变像素颜色的哪一个分量及如何改变它。

 OpenGL颜色调和
         在许多应用中,很容易混合重叠对象的颜色或将一个对象与背景调和。这样的例子有模拟画笔效果、将两张或多张照片混合成一张、透明效果建模和场景中对象的反走样。许多图形软件包提供生成多种颜色调和效果的方法,这些函数称为颜色调和函数(color-blending function)或图像混合函数(image-compositing function)。在OpenGL中,通过先将第一个对象装载进帧缓存,再将第二个对象的颜色与帧缓存颜色相混合来实现两个对象颜色的调和。当前帧缓存颜色称为OpenGL目标颜色(destination color),而第二个对象的颜色称为OpenGL源颜色(source color)。调和方法仅在RGB或RGBA模式下完成。要在应用中进行颜色调和,必须先用下面的函数激活这个OpenGL特性。  
glEnable(GL_BLEND);
    使用下面的函数将关闭OpenGL的颜色调和子程序:  
  glDiaable(GL_ BLEND);
如果颜色调和没有被激活,则一个对象的颜色将简单地取代帧缓存中相应位置的内容。
        颜色可按要达到的效果进行多种调和,通过指定两组调和因子来生成不同的颜色效果。一组调 和因子针对帧缓存中的当前对象(“目标对象”),而另一组调和因子针对新来的(“源”)对象。将 要装人帧缓存的新的调和颜色计算如下:

这里,RGBA源颜色分量为(Rs,Gs,Bs,As),目标颜色分量为(Rd,Gd,Bd,Ad),源调和因子为(Sr,Sg,Sb,Sa),而目标调和因子为(Dr,Dg,Db,Da)。计算出的组合颜色分量归一到0.0到1.0之间。即任何大于1.0的总和均设为1.0,而任何小于0.0的和设为0.0
      使用下列函数可选择调和因子的值:    
g1BlendFunc(sFactor,dFactor);
         参数sFactor和dFactor,即源和目标因子,都用OpenGL符号常量赋值以指定为预定义的一组四元素调和系数。例如,常量GL_ZERO表示调和因子(0.0, 0.0, 0.0, 0.0)而GL_ONE表示(1.0, 1.0, 1.0, 1.0)。我们可以使用GL_DST_ALPHA或GL_SRC_ALPHA将四个调和因子设为目标α值或源α值。其他可用来设定调和因子的OpenGL常量有GL_ONE_MINUS_DST_ALPHA,
GL_ONE_MINUS_SRC_ALPHA,GL_DST_COLOR和GL_SRC_COLOR。这些调和因子常用于模拟透明性,这将在10.19节详细讨论。sFactor的默认值是GL_ONE,而dFactor的默认值是GL_ZERO。因此,这两组调和因子的默认值将导致新来的颜色值取代帧缓存中的当前颜色值。
       包含在OpenGL扩充库中的附加函数称为成像子集。这些子程序中包含了设定调和颜色的子程序和指定调和等式的子程序。
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机图形学作业题 1. 计算机中由图形的形状参数(方程或分析表达式的系数,线段的端点坐标等)加属性参数 (颜色、线型等)来表示图形称图形的参数表示;枚举出图形中所有的点称图形的点阵 表示,简称为图像(数字图像) 2. 什么是计算机图形学计算机图形学有哪些研究内容? 3. 计算机图形学有哪些应用领域? 4. 计算机图形学有哪些相关学科分支?它们的相互关系是怎样的? 5. 图形系统的软件系统由哪些软件组成?举例说明。 6. 了解计算机图形系统的硬件。 7. 什么是显示器的分辨率、纵横比、刷新率? 8. 什么是像素、分辨率、颜色数?分辨率、颜色数与显存的关系? 分辨率M(N、颜色个数K与显存大小V的关系: 例:分辨率为1024像素/行(768行/帧,每像素24位(bit)颜色(224种颜色)的显示 器,所需的显存为:1024(768(24位(bit)=1024(768(24/8=2359296字节(byte)。 或:每像素16777216种颜色(24位真彩色),1024(768的分辨率,所需显存为:102 4(768(log216777216位显存=2359296字节显存。 9. 什么是图元的生成?分别列举两种直线和圆扫描转换算法。 10. OpenGL由核心库GL(Graphics Library)和实用函数GLU(Graphics Library Utilities)两个库组成。 11. 区域填充算法要求区域是连通的,因为只有在连通区域中,才可能将种子点的颜色扩 展到区域内的其它点。 区域可分为 向连通区域和 向连通区域。区域填充算法有 填充算法和 填充算法。 12. 字符生成有哪两种方式? 点阵式(bitmap fonts点阵字——raster光栅方法):采用逐位映射的方式得到字符的点阵和编码——字模位 点阵。 笔画式(outline fonts笔画字——stroke方法):将字符笔画分解为线段,以线段端点坐标为字符字模的编 码。 13. 图形信息包含图形的 和 。 14. 什么是图形变换?图形变换只改变图形的 不改变图形的 。图形变换包括 和 ( )。 15. 熟练掌握二维图形的齐次坐标表示、平移、比例、旋转、对称变换以及复合变换的方 法和原则。 16. 图形的几何变换包括 、 、 、 、 ;图形连续作一次以上的几何变换称 变换。 17. 试写出图示多边形绕点A(xo,yo)旋转的变换矩阵。要求写出求解过程及结果。 18. 试写出针对固定参考点、任意方向的比例变换矩阵。 19. 试写出对任意直线y=mx+b的对称变换矩阵。 20. 什么是窗口?什么是视区?什么是观察变换? 21. 简述二维观察变换的流程。 22. 试述窗口到视区的变换步骤,并推出变换矩阵。 23. 已知w1=10,w2=20,w3=40,w4=80, v1=80,v2=110,v3=10,v4=130, 窗口中一点P(15,60),求视区中的映射点P'? 24. 在观察变换前必须确定图形的哪部分在窗口内,那些部分在窗口外,这个选择处理过 程称为 。 25. 使用Open GL的变换函数,若程序中先后调用的几个变换函数所定义的矩阵及顺序为L, M, N,其作用顺序为: 。 26. 试列举你所知的直线和多边形裁剪算法。 27. 简述Cohen-Sutherland(代码)线段裁剪算法。 28. 窗口和多边形如下图,应用Sutherland- Hodgman算法(逐边裁剪算法),对多边形进行裁剪。请以左、上、右、下的顺序列出 窗口各边裁剪多边形后所得的多边形顶点表。 29. 任何满足欧拉公式的形体称为 形体。 30. 超二次曲面通过将额外的参数插入 曲面方程而形成。 31. 在曲线、曲面的表示上,参数方程有何优点? 32. 要变换参数曲线曲面可以直接变换它的 ,而对于非参数形式则必须变换 。 33. 欧几里得曲线是 物体,沿维曲线路径的位置可用 参数描述。 34. 规格化参变量 t [0, 1] 使得曲线曲面的 容易确定。 35. 什么是插值?什么是逼近?什么是拟合? 36. 给定一组有序的数据点 Pi ,i =0, 1, …, n,称为控制点,构造一条曲线顺序通过每个控制点,称为对这组控制点进行 ,所构造的曲线称为 。 37. 构造一条曲线使之在某种意义下最接近给定的数据点,而不要求通过其中任何一个点 ,称为对这些数据点进行 ,所构造的曲线为 曲线。 38. 拟合(Fitting)是 和 的统称。 39. 对于一组有序的型值点,确定一种参数分割,称之对这组型值点 。确定某个单参数矢函数,即确定参数曲线方程,称为曲线的 。 40. 参数域中所有节点构成的序列称为 矢量。 41. 什么是参数化?什么是参数区间的规格化? 42. 什么是参数连续性? 二条曲线P
### 回答1: 《计算机图形学》是由Donald D.Hearn和M.Pauline Baker合著的一本图形学入门教材。该书以简洁明了的方式介绍了计算机图形学的基础知识和应用技术。 首先,书中介绍了计算机图形学的基本概念,如图像和图形的区别,光栅图形和矢量图形的特点等,为读者建立了整体的认识。 然后,书中详细讲解了图形学的几何基础,如坐标系统、变换和投影等。读者通过学习这些基础知识,能够了解图像的构成和变换过程,为后续的学习打下坚实的基础。 接着,书中介绍了图形学中常用的绘制算法和渲染技术。例如,绘制直线和曲线的算法,裁剪和填充多边形的方法等。这些算法和技术不仅可以用于制作二维图形,还可以应用于维图形的绘制和渲染。 此外,书中还介绍了一些高级的图形学概念和技术,如光照模型、纹理映射、维形状建模等。这些内容扩展了读者的知识视野,使他们能够更深入地理解和应用计算机图形学。 总体而言,Donald D.Hearn的《计算机图形学》是一本系统全面的图形学教材,适合初学者学习。通过学习这本书,读者可以获得对计算机图形学的全面认识,了解图形学的基础理论和实际应用,为进一步深入研究和应用计算机图形学打下坚实的基础。 ### 回答2: 计算机图形学是研究如何使用计算机来生成、处理和显示各种图形的学科。这个领域主要关注如何通过算法和数学方法来模拟现实世界的图形,并将其显示在计算机屏幕上。 Donald Hearn是计算机图形学领域的著名学者和作家,他与M. Pauline Baker合著的《计算机图形学》一书被广泛用作该领域的教科书。该书从理论和实践两个方面介绍了计算机图形学的基本概念、方法和技术。 《计算机图形学》一书内容丰富,以通俗易懂的方式介绍了计算机图形学的基本概念和原理,例如图形学中常用的2D和3D坐标系统、图元的定义和表示、几何变换、光照和着色、裁剪和填充等。书中还以数学、算法等角度阐述计算机图形学中的重要理论,如向量、矩阵、曲线和曲面、隐藏线和填充算法等。 除了理论知识外,《计算机图形学》一书还包含了许多实践案例和应用技术,如绘图算法、动画模拟、渲染技术等。通过实例,读者可以深入了解计算机图形学在游戏开发、虚拟现实、建模和设计等领域的应用,从而加深对该学科的理解和应用能力。 总之,Donald Hearn在《计算机图形学》一书中以简洁明了的方式介绍了计算机图形学的基础概念、方法和技术,使读者能够系统地学习和应用这一领域的知识。这本书是计算机图形学领域的经典教材,对于学习和从事相关工作的人们都具有重要的参考价值。 ### 回答3: 《计算机图形学》是计算机科学与技术领域的一门重要课程,donald.hearn(Donald D.Hearn)是该领域的知名权威教授。 计算机图形学探讨了如何使用计算机来生成、处理和显示图像。它涵盖了图形硬件和软件的开发,以及图像的理论、算法和应用。在计算机图形学中,我们可以学到如何使用数学和计算机科学的方法,来创建与现实世界相似的虚拟世界。 donald.hearn是《计算机图形学》领域的重要学者之一。他合著了《计算机图形学 C语言版》(Computer Graphics C Version),这本书在图形学学习者和从业人员中广为流传和使用。donald.hearn的贡献不仅体现在教材的创作上,他还在该领域的研究和开发方面享有很高的声誉。 学习《计算机图形学》可以使我们了解图像的基本原理和处理方法。我们将学习到常用的图像处理算法,如线段与多边形的算法、曲线与曲面的表示方法、维物体的可视化技术等。这门课程对于从事计算机图形学、计算机动画、游戏开发等领域的人员至关重要。 通过学习donald.hearn的教材和研究成果,我们可以更加深入地了解计算机图形学领域的最新进展和应用。donald.hearn的贡献进一步推动了计算机图形学的发展,并且为我们提供了重要的学习和参考资料。 综上所述,donald.hearn是计算机图形学领域的知名教授,他的教材和研究成果对于学习和应用计算机图形学具有重要价值,而《计算机图形学》这门课程能帮助我们深入了解图像处理的原理和方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值