OpenGL ES 4 画矩形
这次我们画一个矩形。
与画三角形相差不大,我们绘制矩形实际上是通过绘制两次三角形来实现的,比如说有四个点,逆时针 0 1 2 3 ,那么我们通过绘制 0 1 2 和 0 2 3,或者通过绘制 0 1 3 和 0 2 3 都能讲这个矩形画出来,而且,所有的多边形,都可以转换为 n 个三角形,so~ 这将借助 glDrawArrays() 这个函数的特性来实现。
glDrawArrays()
首先我们定义一个矩形顶点数组,当然,长度为 12 ,以便组合成 12/3 = 4 个顶点。
1 | 1. |
与三角形不同的是 1. 2. 4. 这三条语句,分别定义了数据本身,数据格式,重点的改动是 glDrawArrays() 这个方法,这个方法接受三个参数,分别是 绘图模式 0(暂时是默认值) 顶点个数
绘图模式
可选的 绘图模式 有以下几种:
GL_POINTS
GL_LINES
GL_LINE_LOOP
GL_LINE_STRIP
GL_TRIANGLES //三角
GL_TRIANGLE_STRIP //三角
GL_TRIANGLE_FAN //三角
现在我们介绍后面三个,其实后面三个都是三角绘图,不同的模式代表着 OpenGL 在数据数组中取数据时,不同的三角顶点组合方式。
GL_TRIANGLES 代表使用三个顶点来组成图形。将使用 0 1 2 来组成一个三角形,完成后,再用下一组的三个顶点来组成三角形,直到数组结束。
GL_TRIANGLE_STRIP 每个顶点都和之前两个顶点组成一个三角形,例如:0 1 2 和 1 2 3 这是两个三角形。
GL_TRIANGLE_FAN 每两个顶点都和第一个顶点组成一个三角形,例如: 0 1 2 和 0 2 3 这是两个三角形。
其实我们绘制矩形,后两种模式都可以使用,只不过区别在于数据中点的顺序,假如一个矩形逆时针顶点是 0 1 2 3 四个点,我们使用 GL_TRIANGLE_STRIP 的话,数据数组中点的顺序应该是: 0 1 3 2 或者 0 3 1 2 ,因为我们需要 0 1 3 和 1 2 3 组合起来;而假如我们使用 GL_TRIANGLE_FAN 的话,点的顺序应该是 0 1 2 3,这样 OpenGL 将分隔为 0 1 2 和 0 2 3 两个三角形,正好是个矩形。所以我们需要注意保持顶点数组和绘制模式的一致。
下次我们会给目标上色,并移动它们。