OpenGL 理解GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN等绘制三角形序列的三种方式


函数 glDrawArrays()

glDrawArrays(type, startIndex, count); 绘制三角形
其中 type 分为:

  • GL_TRIANGLE
    这种理解最简单。就是每三个顶点绘制一个三角形。但这样顶点数组长度会比较大。
  • GL_TRIANGLE_STRIP
  • GL_TRIANGLE_FAN

GL_TRIANGLE_STRIP

strip:带状,条状的意思
在绘制朝一个方向延展的图形时选择它。

设顶定个数为 n;前三个顶点逆时针构成第一个三角形。
之后,第 n 个顶点,

  • 当 n 为偶数:
    (n-1, n-2, n) 如n 为4,表示第4个顶点,这时就是用第3、第2和第4个顶点逆时针构成一个三角形
  • 当 n 为奇数:
    (n-2, n-1, n)

GL_TRIANGLE_FAN

fan:扇形
在绘制扇形、圆形时选择它。

初始顶点需要是扇形的圆心,前三个顶点逆时针构成第一个三角形。
从第三个顶点开始就满足,就是 (n, 圆心, n-1)


初始顶点

在 OpenGL中,需要逆时针绘制。所以在第二种类型GL_TRIANGLE_STRIP中,前三个顶点方向通常是这样的:

  • 第一第二个顶点,从上向下;第二第三个顶点从左向右。
    反之也是成立的,即第一第二顶点,从下向上;第二第三顶点从右向左。
  • 第一第二个顶点,从左向右;第二第三顶点,从下向上。
    同样,反之,第一第二顶点,从右向左;第二第三顶点从上向下。

发布了400 篇原创文章 · 获赞 364 · 访问量 162万+

猜你喜欢

转载自blog.csdn.net/jjwwmlp456/article/details/94740685