线的属性
线的属性有颜色、线宽及线型。
与点的大小类似,线宽也会进行类似的舍入处理,且只能在glBegin外调整。
线型是一个16位的开关,借此可以来模拟各种样式的线条。
线同样可以有颜色渐变。
#include<Windows.h>
#include<GL/glut.h>
void line()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3d(1.0, 0.0, 0.0);
//调整线宽,注意只能在glBegin外调整
glLineWidth(3.0);
glBegin(GL_LINES);
{
glVertex2i(100, 100);
glVertex2i(100, 200);
glVertex2i(200, 100);
glVertex2i(200, 200);
}
glEnd();
//调整线形,16位开关(从低往高)
glEnable(GL_LINE_STIPPLE);
/*
*调整线形的函数
*@param factor 每一位重复多少次之后进入下一位
*@param pattern 16位开关
*/
glLineStipple(1, 0xaaaa);
glBegin(GL_LINES);
{
glVertex2i(300, 300);
glVertex2i(300, 400);
glVertex2i(400, 300);
glVertex2i(400, 400);
}
glEnd();
glDisable(GL_LINE_STIPPLE);
//颜色渐变
//GL_FLAT为单色
glShadeModel(GL_SMOOTH);
glBegin(GL_LINE_LOOP);
{
glColor3d(1.0, 0.0, 0.0);
glVertex2i(500, 200);
glColor3d(0.0, 1.0, 0.0);
glVertex2i(600, 373);
glColor3d(0.0, 0.0, 1.0);
glVertex2i(700, 200);
}
glEnd();
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800, 600);
glutCreateWindow("Line attribute");
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0, 800.0, 0.0, 600.0);
glutDisplayFunc(line);
glutMainLoop();
}