跟随学期第三课
放了一个国庆,回家种树了。就没有持续的继续学习。下面我们跟着学习
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的模式进行画图
破折线的话就改变参数值就能实现了。