计算机图形与OpenGL学习三(图元的属性2:点线的属性)

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)还是依旧不明显,以后的学习中再找原因

猜你喜欢

转载自blog.csdn.net/lhs322/article/details/79819064