计算机图形学(三)_图元的属性_17_ OpenGL属性组

        属性和其他状态参数按属性组(attribute group)进行组织。每一组包括相关的状态参数集合。例如,点属性组(point-attribute group)包括了大小和点的平滑(反走样)参数,而线属性组(line-attribute group)包括了宽度、模板状态、模板图案、模板重复计数及线段光滑状态等。类似地,多边形属性组(polygon-attribute group)包括了11种多边形参数,如填充模式、前向面标志及多边形平滑状态。因为颜色是所有图元所共有的一个属性,所以它有单独的属性组。而有些参数被包含在多个组内。
        OpenGL中有约20个不同的属性组,可以使用一个函数来保存或重新设定一个或多个组内的所有参数。保存一个指定属性组所有参数的工作由下列命令实现。
glPushAttrib (attrGroup);
        参数attrGroup用标识一个属性组的OpenGL符号常量来赋值,如GL_POINT_BIT, GL_LINE_BIT或GL_ POLYGON_ BIT。为了保存颜色参数,使用符号常量GL_CURRENT_BIT。我们可以用符号常量GL_ ALL_ ATTRIB_ BITS来存储所有属性组中的所有状态参数。glPushAttrib函数将指定组的所有参数放进属性栈(attribute stack)。
       利用逻辑OR操作,可以组合符号常量,从而将参数存储在两个或更多的组中。下面的语句给出了属性栈上用于点、直线和多边形的参数。  
glPushAttrib (GL_POINT_BIT | GL_LINE_BIT | GL_POLYGON_BIT);
        将一组状态参数存储起来后,我们可以用下列函数将属性栈的所有值进行重建。
glPopAttrib ();
在glPopAttrib函数中不使用任何变量,因为它使用栈中的所有值来设定OpenGL的当前状态。
        这些保存和重建状态参数的命令使用一个服务器属性栈(server attribute stack )。 OpenGL中还有一个客户属性栈(client attribute stack)用来保存和重建客户状态参数。存取这些堆栈的函数是glPushClientAttrib和glPopCIientAttrib。客户属性栈只有两个:一个用于像素存储器模式而另一个用于顶点数组。像素存储器参数包括字节对齐信息和用于存储显示中的子图的数组类型。顶点数组参数给出当前顶点数组状态的信息,如各种数组的激活/停止状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值