OpenGL点、线和三角形

405 阅读2分钟

OpenGL点/线

  1. 最简单也是最常用的 4.0f,表示点的大小
glPointSize(4.0f);

⚠️注意:设置点大小会改变所有的点,所以设置完后要重置。

  1. 设置点的⼤小范围和点与点之间的间隔
GLfloat sizes[2] = {2.0f,4.0f};
GLfloat step = 1.0f;
  1. 获取点⼤小范围和最⼩步长
glGetFloatv(GL_POINT_SIZE_RANGE ,sizes);
glGetFloatv(GL_POINT_GRAULARITY ,&step);
  1. 通过使⽤程序点⼤小模式来设置点⼤小
glEnable(GL_PROGRAM_POINT_SIZE);
  1. 这种模式下允许我们通过编程在顶点着⾊器或⼏何着⾊器中设置点⼤小。着⾊器内建变量: gl_PointSize,并且可以在着⾊器源码直接写
gl_PointSize = 5.0
  1. 设置线段宽度
glLineWidth(2.5f);

OpenGL三角形

对于OpenGL光栅化最受欢迎的是三⻆形,3个顶点就能构成一个三⻆形。

image.png

  • 在绘制第一个三角形时,线条是按照从V0-V1,再到V2。最后再回到V0的一个闭合三⻆形。这个是沿着顶点顺时针⽅向。这种顺序与⽅向结合来指定顶点的方式称为环绕
  • 在默认情况下,OpenGL认为具有逆时针⽅向环绕的多边形为正面。这就意味着上图左边是正面,右边是反面。
glFrontFace(GL_CW);
GL_CW: 告诉OpenGL顺时针环绕的多边形为正面;
GL_CCW: 告诉OpenGL逆时针环绕的多边形为正面;

OpenGL三角形带

对于很多表面或者形状⽽⾔,我们会需要绘制⼏个相连的三角形。这时我们可以使用GL_TRIANGLE_STRIP 图元绘制⼀串相连三⻆形,从⽽节省⼤量的时间。

image.png

优点

  1. ⽤前3个顶点指定第1个三角形之后,对于接下来的每⼀个三角形,只需要再指定1个顶点。需要绘制⼤量量的三角形时,采⽤这种⽅法可以节省⼤量的程序代码和数据存储空间。
  2. 提供运算性能和节省带宽。更少的顶点意味着数据从内存传输到图形卡的速度更快,并且顶点着色器需要处理的次数也更少了。

OpenGL三角形扇

对于很多表面或者形状而言,我们会需要绘制几个相连的三⻆形。这时我们可以使用GL_TRIANGLE_FAN 图元绘制一组围绕⼀个中⼼点相连的三⻆形。

image.png