Vulkan

opengl 直线的线型(各种虚线)

除了直线的宽度可以根据需要进行改变外,直线的线型也可以改变。glLineStipple就可以提供不同于常规的连续线段的中心线、虚线、点划线等等。其函数原型如下

 
void glLineStipple(
  GLint factor,
  GLushort pattern
);

其中factor 是比例因子,它表示在线型模式中,每一位的放大倍数。例如,factor3,那么线型模式中的每一位要重复3次,然后在继续下一位。factor的取值范围是[1, 256],缺省值是1pattern 是一个16位的整数,它表示线型模式,当某一位为0时,表示不画线,为1时画线,但是处理是从最底位开始的,颜色为当前颜色。缺省值为0xFFFF,即连续线。 例如pattern0x40FF时,表示的画线如下图10-3所示。

 

 

禁用和启用线型模式设置可以使用glEnable(GL_LINE_STIPPLE) glDisable(GL_LINE_STIPPLE),当禁用线型模式时,使用glLineStipple设置的直线均按照连续线处理,这也是OpenGL的缺省处理。

 

下面我们来举例说明常用的几种直线线型的构造和使用。

 

BOOL bAntialiasing = FALSE;         //是否进行反走样处理

BOOL bAntiPress = FALSE;            //是否按了F1

void Line3f(GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);

int PatternMode = 0;            //线型模式

int Pattern[]=                  //定义了6种线型

{

    //点线 1000100010001000, 表示实际画线的点,反序后转换成16进制就是0x1111

    //.  .  .  .  .  .  .  .  .  .  .  .  .  .

    0x1111,

 

    //点划线    1111111111100100

    //____ . ____ . _____ . _____. _____

    0x27FF,

   

    //中心线    1111111111001100

    //_____ _ _____ _ _____ _ _____ _ _____

    0x33FF,

 

    //虚线  1111110011111100

    //____  ____  ____  ____  ____  ____  ____

    0x3F3F,

   

    //双点划线  1111111100100100

    // ____ . . ____ . . ____ . . ____ . . ____

    0x24FF,

 

    //三点划线  111111110101010

    // ____ . . ____ . . ____ . . ____ . . ____

    0x55FF

};


posted on 2012-09-12 22:04  Vulkan  阅读(1316)  评论(0编辑  收藏  举报

导航