优化绘制三角形


【资料图】

元素缓冲对象

元素缓冲对象(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。

至此,绘制一个矩形的流程如下:

标签:

X 广告
X 广告

Copyright ©  2015-2022 时代舞蹈网版权所有  备案号:   联系邮箱: 514 676 113@qq.com