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

OpenGL颜色函数(下)

OpenGL 颜色数组

    我们也可以在顶点数组中和坐标值混合一起指定场景的颜色值(参见2.17节)。这既可在RGB模式下也可在RGBA模式下进行。与顶点数组一样,必须先激活OpenGL的颜色数组:   
glEnableClientState(GL_COLOR_ARRAY);
然后,对RGB模式要指定颜色分量的位置和格式: 
 glColorPointer(nColorComponents,dataType,offset,colorArray);
        参数 nColorComponents赋值为3或4,依赖于是否在数组 colorArray中列出RGB或RGBA颜色分量。OpenGL符号常量如GL INT或GL FLOAT赋给参数dataType来指向颜色值的数据类型。对于一个单独的颜色数组,我们可将0赋给参数 offset。但是如果将颜色数据和顶点数据组合在同一个数组中,则 offset的值是数组中每一组颜色分量的字节数。
        下面的程序段设定立方体前向面所有顶点的颜色为蓝色,设定后向面所有顶点的颜色为红色。
typedef GLint vertex3 [3], color3 [3];
vertex3 pt [8] = {{0,0,0}, {0,1,0}, {1,0,0}, {1,1,0}, {0,0,1}, {0,1,1}, {1,0,1}, {1,1,1}};
color3 hue [8] = {{1,0,0}, {1,0,0}, {0,0,1}, {0,0,1}, {1,0,0}, {1,0,0}, {0,0,1}, {0,0,1}};

glEnableClientState (GL_VERTEX_ARRAY);
glEnableClientState (GL_COLOR_ARRAY);

glVertexPointer (3, GL_INT, 0, pt);
glColorPointer (3, GL_INT, 0, hue);
我们可以将颜色和顶点坐标一起装入一个交错数组( interlaced array )。每一个指针用适当的位移值指向单一的交错数组。例如:
static GLint hueAndPt [] = 
{1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,
 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1,
 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1};
glVertexPointer (3, GL_INT, 6 * sizeof(GLint), hueAndPt [3]);
glColorPointer (3, GL_INT, 6 * sizeof(GLint), hueAndPt [0]);
        该数组的前三个元素指定一个RGB颜色值,接下来的三个元素指定一个顶点坐标(x, y, z),这样交错下去直到最后。将offset设定为相邻颜色或顶点值之间的字节数,即两者均为 6 * sizeof(GLint)。颜色值从交错数组的第一个元素即 hueAndPt[0]开始,顶点值从第四个元素即 hueAndPt[3]开始。
        因为一个场景通常包括若干个对象,每个对象有多个平表面,OpenGL提供一个可以一次性指定所有顶点和颜色数组及其他类型信息的函数。如果我们要将上例中的颜色和顶点值改为浮点数,则需按照下面的格式使用该函数:
glInterleavedArrays (GL_C3F_V3F,0,hueAndPt);
第一个参数是一个OpenGL常量,用来指定颜色(C)和顶点(V)的三元素浮点描述。而数组hueAndPt按每个顶点的颜色放在其坐标前的方式交错。该函数也自动地激活顶点和颜色数组。在颜色索引模式下,使用下面的语句定义一个颜色索引数组:
glIndexPointer (type, stride, colorIndex);
颜色索引在数组 colorIndex中列出,而参数type和stride与g1CoIorPointer中的相同。 由于颜色表索引用单个值描述,所以不需要size参数。

其他OpenGL颜色函数

    这个用来为显示窗口选择RGB颜色分量的函数。
  g1ClearColor(red, green, blue, alpha);
(red, green, blue)中的每一分量以及a参数均赋以0.0到1.0范围中的浮点数值。四个参数的默认值都是0.0,它们生成黑色。如果每一个颜色分量置为1.0,则该净颜色是白色。颜色分量为0.0到1.0之间的相等值时得到各种灰色。第四个参数α提供对前面颜色和当前颜色调和的选项。 这仅仅在激活了OpenGL的调和特性后才会发生;颜色调和不可能作用于颜色表指定的值
       如同我们在3.19节中所指出,OpenGL中有几个颜色缓存可用做显示场景的当前刷新缓存,而函数g1CIearColor指定所有颜色缓存的颜色。然后用下面的命令将净颜色 用于这些颜色缓存:    
glClear(GL_COLOR_BUFFER_BIT);
        我们也可以用glClear函数设定OpenGL中有效的其他缓存的初始值。它们是存放调和颜色信息的累计缓存(accumulation buffer )、存放场景对象深度值(离观察位置的距离)的深度缓存(depth buffer)及存放定义图形范围的模板缓存(stencil buffer )。
在颜色索引模式下,使用下面的 函数(而不是g1ClearColor)设定显示窗口颜色
glClearIndex(index);
        窗口背景色用存放在颜色表中index位置的颜色来指定。执行 glClear (GL_COLOR_BUFFER_BIT)
数后窗口就以该颜色显示。
       OpenGL库中有另外一些颜色函数用来处理各种任务,如改变颜色模式、设定场景光照效果、描述照相机效果及绘制对象表面。我们在分析计算机图形系统的各种处理时将检查其他的颜色函数。但现在,我们把讨论限制在与图元的颜色描述有关的那些函数范围内。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
### 回答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、付费专栏及课程。

余额充值