计算机图形学(三)_图元的属性_7_ 线属性函数

OpenGL线属性函数

可以用颜色、线宽和线型等三个属性设定来控制OpenGL直线段的外在表示。我们已经看到了如何选择颜色,OpenGL还提供了一个设定线宽的函数和另外一个设定短划或点线等线型的函数。

OpenGL线宽函数

使用下面的OpenGL函数可以设定线宽:

 glLineWidth (width);

参数width赋以实数,该值舍入到最近的非负整数。如果输人值舍入到0.0,则线段用默认的标准宽度1.0显示。然而,在对线段进行反走样时,其边界进行光滑处理以减少阶梯现象,因而有可能出现小数宽度。有些线宽函数的实现仅支持有限的几种线宽,其他一些则不支持1.0以外的线宽。

OpenGL的线宽函数用4.5节的方法实现。即通过比较线段端点的水平和垂直距离Δx和Δy来确定使用垂直段或水平段来生成粗线段。

OpenGL线型函数

默认状态下,直线段显示成实线。但也可以显示划线、点线或短划和点混合的线段。还可改变短划及短划或点之间的长度。可以利用下面的OpenGL函数设定当前线型:

glLineStripple(repeatFactor,pattern);

参数pattern用来引入描述如何显示线段的一个16位整数。值为1的位对应一个“开”像素,值为0的位对应一个“关”像素。该模式从低位开始应用于线路径。默认模式为0xFFFF(每一位的值均为1),它生成实线。整数参数repeatFactor说明模式中每一位重复应用多少次才轮到下一位。默认的重复值是1。

对于一条折线来说,指定的线型模式并非在每一线段的始端重新开始。它从折线的第一个端点开始,到最后一条线段的最终一个端点结束,连续地应用于折线中的所有线段。

作为指定一个线型的例子,假定参数pattern赋予了十六进制数0x00FF而重复因子为1。这将显示一条由8像素短划和8像素短划间隔的划线。同样,由于先应用低位值,线段从始端开始显示一个8像素短划,接着是一个8像素间隔,然后再显示一个8像素短划,如此知道第二个端点。在使用当前线型显示线段之前,必须先激活OpenGL的线型特性。下面的函数可实现这一点。。

 glEnable(GL_LINE_STIPPLE);

如果忘记使用这一激活函数,则显示实线;即使用默认模式0xFFFF显示线段。在任何时候都可以使用下列函数来关闭线型特性:

  glDisable(GL_LINE_STIPPLE);

该函数使用默认模式(实线)取代当前线型。

在一下面的程序中,通过绘制三条不同线型和线宽的线段来展示OpenGL线属性函数的应用。

图4.16给出了可由该程序生成的数据图。

/* Define a two-dimensional world-coordinate data type. */
typedef struct { float x, y; } wcPt2D;
wcPt2D dataPts [5];
void linePlot (wcPt2D dataPts [5])
{
	int k;
	glBegin (GL_LINE_STRIP);
	for (k = 0; k < 5; k++)
	glVertex2f (dataPts [k].x, dataPts [k].y);
	glFlush ();
	glEnd ();
}

/*Invoke a procedure here to draw coordinate axes. */
	glEnable (GL_LINE_STIPPLE);

/* Input first set of (x, y) data values. */
	glLineStipple (1, 0x1C47); // Plot a dash-dot, standard-width polyline.
	linePlot (dataPts);

/* Input second set of (x, y) data values. */
	glLineStipple (1, 0x00FF); // Plot a dashed, double-width polyline.
	glLineWidth (2.0);
	linePlot (dataPts);

/* Input third set of (x, y) data values. */
	glLineStipple (1, 0x0101); // Plot a dotted, triple-width polyline.
	glLineWidth (3.0);
	linePlot (dataPts);

	glDisable (GL_LINE_STIPPLE);

时间: 2024-10-11 18:08:15

计算机图形学(三)_图元的属性_7_ 线属性函数的相关文章

计算机图形学(一) 视频显示设备_7_光栅扫描系统

光栅扫描系统  交互式光栅图形系统通常使用几个处理部件.除了中央处理器(CPU)以外,还使用一个视频控制器(video controller)或显示控制器(display controller)来控制显示设备的操作.简单光栅系统的组织结构如图2.24所示.其中,帧缓存可以在系统存储器的任意位置,视频控制器通过访问帧缓存来刷新屏幕.更高级的光栅系统除了使用视频控制器之外,还使用其他处理器作为协处理器和加速器来完成各种图形操作. 视频控制器 图2.25给出了常用的光栅系统组织.帧缓存使用系统存储器的

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

图元的属性  通常,任何影响图元显示方法的参数一般称为属性参数(attribute parameter).诸如颜色和大小等属性参数确定了图元的基本特性.其他则指出在特定条件下怎样显示图元.特定条件属性的例子有在交互式对象选择程序中的可见性或可检测性.这类特定条件属性将在后面几章中详细讨论.这里,我们仅仅考虑控制图元的基本显示特性的属性,而不考虑特定的条件.例如,线段可以是点线或划线.粗线或细线以及蓝色或橙色.区域可以使用一种颜色或多色图案填充.文本可以按从左到右的阅读方式进行显示,也可以沿屏幕对

计算机图形学(三)_图元的属性_4_线的属性_2_线宽

线的属性_线型 可选用的线型属性包括实线.虚线和点线等.通过设置沿线路径显示的实线线段的长度和间距来修改画线算法,可以生成各种类型的线.可以通过在实线线段之间插入与实线线段等长的空白段来显示虚线,许多图形系统都允许选择划线长度和划线间隔的长度. 光栅线算法通过绘制像素段来显示线型属性.对于各种划线.点线和点划线样式,画线程序沿线路径输出一些连续像素段.在每两个实心段之间有一个给定长度的空白间隔段,段长度和中间空白段的像素数目可用像素掩模(pixel mask)指定.像素掩模是包含数字0和1的字符

计算机图形学(二)输出图元_10_多边形填充区_1_多边形分类和识别

多边形填充区 一个多边形(polygon)在数学上定义为由三个或者更多称为顶点的坐标位置描述的平面图形,这些顶点由称为多边性的边(edge或者side)顺序连接.进一步来看,几何上要求多边形的边除了端点之外没有其他公共点.因此,根据定义,一个多边形在其单一平面上必须有其所有的顶点且边之间无交叉.多边形的例子有三角形.矩形.八边形和十六边形等.有时,任一有封闭折线边界的平面图形暗指一个多边形,而若其没有交叉边则称为标准多边形(( standard polygon)或简单多边形( simple po

第三篇:属性_第一节:控件属性与属性的持久化

一.控件属性 首先,属性是各种.net语言的基本语法.而我们常说的控件属性是指控件类中用public修饰的属性. 见Lable的Text属性: [Bindable(true), DefaultValue(""), Localizable(true), PersistenceMode(PersistenceMode.InnerDefaultProperty), WebCategory("Appearance"), WebSysDescription("Lab

第三篇:属性_第二节:控件属性在页面及源码中的表示方式

一.属性在页面及源码中的表示方式 认真地看看页面中声明控件的代码,你会发现控件属性在页面中的表示千变万化.我们看看下面这些: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="控件属性在页面源码中的表达方式.aspx.cs" Inherits="CustomServerControlTest.控件属性在页面源码中的表达方式" %> <!DOCT

计算机图形学 复习笔记

计算机图形学 复习笔记 (个人整理,仅做复习用 :D,转载注明出处:http://blog.csdn.net/hcbbt/article/details/42779341) 第一章 计算机图形学综述 研究内容 图形的概念:计算机图形学的研究对象 能在人的视觉系统中产生视觉印象的客观对象 包括自然景物.拍摄到的图片.用数学方法描述的图形等等 图形的要素 几何要素:刻画对象的轮廓.形状等 非几何要素:刻画对象的颜色.材质等 图形表示法 点阵表示 枚举出图形中所有的点,简称为图像. 参数表示 由图形的

计算机图形学名词解释

转自 http://blog.csdn.net/lwfcgz/article/details/39254743 3D三维(three dimension).客观世界中静止的物体都是三维的,在计算机图形学中常在一定的坐标系中用(x,y,z)坐标系列表示物体. 3D modeling3D建模.用三维坐标来描述物体的形状.在各种计算机图形应用领域中有不同的三维建模方法,用不同的算法来描述这些领域中的物体和对象. 3D transformation3D变换.在三维空间中把物体的三维坐标从一个位置变换至另

[图形学] 计算机图形学 with OpenGL第一篇

<计算机图形学>(第四版)正在学习中,学习目的是为了在Unity中使用shader实现不同的渲染效果. 希望在这里能把学习过程中学到的知识和遇到的问题记录下来. 工作环境是:Xcode8.3.2. 代码目录是:https://github.com/p0e0o0p0l0e0/Computer_Graphics.git 目标学习内容有以下几章,已经学到第8章. 第3章:计算机图形学软件 第4章:输出图元 第5章:图元的属性 第6章:实现图元及属性的算法 第7章:二维几何变换 第8章:二维观察 第9