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

来源:互联网 发布:禅道 mysql数据库连接 编辑:程序博客网 时间:2024/06/05 08:51

跟随学期第三课

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

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