金融情报局网_中国金融门户网站 让金融财经离的更近

缓冲对象和顶点数组对象的封装

当前位置:金融情报局网_中国金融门户网站 让金融财经离的更近>资讯 > 社会 > 正文  2023-08-06 02:47:04 来源:哔哩哔哩

这节我们要实现VBOEBOVAO的封装。

首先我们把VBO抽象成一个类VertexBuffer。我们将借助类的构造函数和析构函数来自动实现一些基本的操作。


(资料图片)

我们在构造函数中实现VBO对象的创建和绑定:

析构函数实现VBO对象的删除:

此外还要有手动实现绑定和解绑功能的函数:

EBO的封装和VBO完全一样,就不赘述了。

VAO的封装就比较复杂,因为这里涉及到顶点属性的配置。

首先我们需要创建一个类表示顶点数据,这个类中包含顶点和顶点的步长。而一个顶点又是由一系列顶点属性构成,因此我们还需要定义一个结构表示顶点属性:

这里使用模板特化为顶点添加顶点属性。

有了顶点数据,下一步就可以实现顶点数组的封装。

这里和VBO的封装大同小异。

唯一的区别就是多了一个函数,AddAttribs()用于配置顶点属性。

首先调用VBO的BInd函数,是为了确保在有多个顶点缓冲对象的情况下,配置顶点属性时绑定了正确的VBO对象。接着获取顶点,并用一个循环取出顶点中的每一个属性,并进行配置。这里的offset用于计算每个顶点属性的偏移量。

当我们完成VAO、VBO和EBO对象的封装后,代码将变得十分简洁:

关键词: