2.点、线的属性
2.1点属性函数
点的颜色由显示颜色的当前颜色控制。
点的大小由下面的函数控制
glPointSize(size);
size:浮点数值,该值舍入到一个整数。点大小为1.0时显示一个像素,点大小为2.0时显示2x2的像素阵列。默认值是1.0
2.2线的属性
【线宽与线宽函数】
线宽的选择的实现取决于输出设备的能力,视频显示器上的粗线可以用相邻的平行线进行显示。
可以用glLinewidth(width);来设定线宽
width以实数表示,该值舍入到最近的非负整数。
【线型与线型函数】
线型属性有:实线、虚线、点线等。默认直线段显示为直线,可以利用下面的函数设定当前线性。
glLineStipple(repeatFactor,pattern);
pattern :16位的整数,它表示线型模式,当某一位为0时,表示不画线,为1时画线,但是处理是从最底位开始的,颜色为当前颜色。缺省值为0xFFFF,即连续线。 例如pattern为0x40FF时,表示的画线如下图
repeatFactor:其中repeatFactor 是比例因子,它表示在线型模式中,每一位的放大倍数。例如,repeatFactor为3,那么线型模式中的每一位要重复3次,然后在继续下一位。factor的取值范围是[1, 256],缺省值是1。
对于一条折线来说,指定的线型模式并非在每一线段的始端重新开始,它从折线的第一个端点开始,到最后一条线段的最终端点结束。
在使用线型属性之前,必须通过以下函数先进行激活。
glEnable(GL_LINE_STIPPLE);
使用glDisable(GL_LINE_STIPPLE)进行关闭
【实例】
线型pattern实例
① 点线1000100010001000, 表示实际画线的点,反序后转换成 16进制:0x1111
. . . . . . . . . . . . . .
② 点划线 1111111111100100 16进制:0x27FF,
____ . ____ . _____ . _____. _____
③ 中心线 1111111111001100 16进制: 0x33FF,
_____ ______ _ _____ _ _____ _ _____
④ 虚线 1111110011111100 16进制:0x3F3F,
____ ____ ____ ____ ____ ____ ____
⑤双点划线 1111111100100100 16进制 0x24FF,
____. . ____ . . ____ . . ____ . . ____
⑥三点划线 111111110101010 16进制:0x55FF
____. . ____ . . ____ . . ____ . . ____
【实例】
glColor3f(1.0, 0.0,0.0);
glNewList(regHex, GL_COMPILE);
int pointLoop[5][2] = { { 20, 20 }, { 50, 50 }, { 70, 10 },{ 100, 100 }, { 150, 10 } };//顶点
glEnable(GL_LINE_STIPPLE);//开启线型属性
glBegin(GL_LINE_STRIP);
glLineStipple(1, 0x1111);//点线
for (int i = 0; i<5; i++) {
glVertex2iv(pointLoop[i]);
}
glFlush();
glEnd();
glEndList();
【结果】但是可见点线效果并不明显。以后将pattrtern设置为(0x1000)还是依旧不明显,以后的学习中再找原因