OpenGL基础(二):线

    OPengl中绘制线的类型有:GL_LINES,GL_LINE_STRIP和GL_LINE_LOOP。

GL_LINES    

     每一对顶点连接成一条线段
glBegin(GL_LINES);
	glVertex3f(100.0f, 100.0f,0.0f);
	glVertex3f(40.0f, 100.0f, 0.0f);
	glVertex3f(70.0f, 70.0f, 0.0f);
	glVertex3f(50.0f, 70.0f, 0.0f);
glEnd();
GL_LINE_STRIP

    点构成了连续线段

glBegin(GL_LINE_STRIP);
	glVertex3f(100.0f, 100.0f,0.0f);
	glVertex3f(40.0f, 100.0f, 0.0f);
	glVertex3f(70.0f, 70.0f, 0.0f);
	glVertex3f(50.0f, 70.0f, 0.0f);
glEnd();

GL_LINE_LOOP   

    封闭的连续线段
glBegin(GL_LINE_LOOP);
	glVertex3f(100.0f, 100.0f,0.0f);
	glVertex3f(40.0f, 100.0f, 0.0f);
	glVertex3f(70.0f, 70.0f, 0.0f);
	glVertex3f(50.0f, 70.0f, 0.0f);
glEnd();

  点画线可以通过GL_LINE_STIPPLE设置,0xAAAA表示1010 1010 1010 1010 即像素点显示与不显示交替。

glEnable(GL_LINE_STIPPLE);
glLineStipple(3,0xAAAA);

  对线进行平滑处理,可以通过GL_LINE_SMOOTH

if (!glIsEnabled(GL_LINE_SMOOTH))
	glEnable(GL_LINE_SMOOTH);

    当前线的宽度可以通过GL_LINE_WIDTH得到,测试结果为1.0

GLfloat size;
glGetFloatv(GL_LINE_WIDTH, &size);

    线的宽度范围通过GL_LINE_WIDTH_RANGE得到,测试结果为0.5 - 10.0。即宽度范围0.5 - 10.0的线,可以做平滑处理。

GLfloat size[2];
glGetFloatv(GL_LINE_WIDTH_RANGE, size);

     线的颗粒度可以通过GL_LINE_WIDTH_GRANULARITY得到,测试结果为0.125。

GLfloat granularity;
glGetFloatv(GL_LINE_WIDTH_GRANULARITY, &granularity);

猜你喜欢

转载自blog.csdn.net/liyazhen2011/article/details/80787788
今日推荐