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

};


  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值