根据LearnOpenGL的教程学习而来,有很多不懂的地方,现根据自己的理解和参考各位大大网络上的分享,记录如下,给自己一个回顾的机会,也希望能够惠及他人
VBO
定义
VBO就是用来管理存储在GPU的显存上的顶点内存=VBO代表着我们定义的顶点。
这样做的好处就是我们可以一次性发送大量顶点数据到显卡上,而不用每次发送一个。从CPU发送数据到显卡可是很慢的;因此我们也需要尽可能多地把所有顶点数据给VBO
具体代码操作流程
- 创建对象:
gluint VBO; //定义一个无符号整形VBO对象,其值为其ID
glGenBuffers(num, &VBO);//分配num个缓冲给VBO
- 绑定顶点缓冲:
glBindBuffer(GL_ARRAY_BUFFER,VBO);//将VBO对象绑定到顶点缓冲
从此起,任何作用于顶点缓冲的操作,都会配置当前绑定的缓冲(VBO)。相当于状态设置。
- 复制数据给顶点缓冲:
glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_STATIC_DRAW);
glBufferData是一个专门用来把用户定义的数据复制到当前绑定缓冲的函数:
- 第一个参数是目标缓冲的类型;
- 第二个参数指定传输数据的大小(以字节为单位);
- 第三个参数是我们希望发送的实际数据;
- 第四个参数指定了我们希望显卡如何管理给定的数据。