【资料图】
元素缓冲对象(Element Buffer Object,EBO),也称为索引缓冲对象(Index Buffer Object),用于存储绘制图元所需的顶点索引数据,是一种用于优化绘制三角形元素的机制。
举例来说,假设我们需要绘制一个矩形。由于OpenGL主要处理三角形,我们可以绘制两个三角形来形成一个矩形。按照之前的做法,我们需要向着色器发送六个顶点,但由于这六个点中有两个重复的,因此会造成内存和性能的浪费。而使用EBO,简单来说,就是只定义四个顶点,然后根据顶点索引择需取用,当然其中有两个会被重复使用。
下面我们定义顶点和绘制矩形所需的索引:
EBO的使用和VBO一样,只是缓冲类型不再是GL_ARRAY_BUFFER,而是GL_ELEMENT_ARRAY_BUFFER。
最后用函数glDrawElements()替换glDrawArrays()。
mode表示绘制的基本图元类型,此处依然为GL_TRIANGLES。
count表示要绘制顶点的个数,这里应为6。
type表示索引的数据类型,这里是GL_UNSIGNED_INT。
indices指定EBO中的偏移量(或者传递一个索引数组,但是这是当你不在使用索引缓冲对象的时候),此处为0。
至此,绘制一个矩形的流程如下:
上一篇 : 警企地协同联动,地铁燕房线停运滞留乘客及时疏散
下一篇 : 最后一页