opengl学习第三课(点和线的处理)

跟随学期第三课

放了一个国庆,回家种树了。就没有持续的继续学习。下面我们跟着学习

opengl入门学习第三课

关于opengl处理点,和线的问题。

关于点

在我们话二维图像的时候我们发现只能画一条很细,而且我们的点看不见!为什么呢,因为我们没有对点的大小做出限制,他就是默认的1个像素,而一个像素很小,所以我们看到的东西就很细很小。下面我们来设置点大小来看看
利用glPointSize()函数来设置点的大小(注:函数内部是float类型的哦,而且必须大于1.0f)

void myDisplay()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glPointSize(5.0f);
    glBegin(GL_POINTS);
    glVertex2f(0.0f, 0.0f);
    glVertex2f(0.5f, 0.5f);
    glEnd();
    glFlush();
}

运行截图

我们能清晰的看见在屏幕上有两个白色的点。我们将参数调大那么点也就会越大。

关于直线、

直线也有相对应的函数来定义高度glLineWidth(GLfloat width)函数内部也是需要float类型的哦

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glLineWidth(5.0F);
    glBegin(GL_LINES);
    glVertex2d(0.0, 0.0);
    glVertex2f(0.5f, 0.5f);
    glEnd();
    glFlush();
}

用法跟glpointsize()类似。
效果

关于虚线

我们要画虚线的话就在画线前启用glEnable(GL_LINE_STIPPLE);来启动虚线模式(使用glDisable(GL_LINE_STIPPLE)可以关闭之)。
通过glLineStipple()函数来设置虚线的样式
我们来试试。

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glEnable(GL_LINE_STIPPLE);
    glLineStipple(2, 0x3F07);
    glLineWidth(1.0F);
    glBegin(GL_LINES);
    glVertex2d(0.0, 0.0);
    glVertex2f(0.5f, 0.5f);
    glEnd();
    glFlush();
}

这一串代码中我们看到多加了
glEnable(GL_LINE_STIPPLE);
glLineStipple(2, 0x3F07);
其中第一个为启动虚线函数,第二个为设置虚线的样式,我们可以看到其中有两个参数,第一个为factor重复因子,第二个为pattern虚线画点的模式。什么是重复因子什么是画点的模式呢?
pattern是一个由0和1组成的序列从低位看起如果为1则不画点,为O则画点,如果我们的序列为0101010101010101那么画出来的点就为一个点一个空。
factor就是重复的次数,为那么0101010101010101就变成00110011001100110011001100110011的模式进行画图

破折线的话就改变参数值就能实现了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值