OpenGL(六)各种缓冲区介绍(2)

您所在的位置:网站首页 opengl红宝书和蓝宝书哪个好 OpenGL(六)各种缓冲区介绍(2)

OpenGL(六)各种缓冲区介绍(2)

2023-04-20 18:44| 来源: 网络整理| 查看: 265

概述

本篇接着上篇介绍glGenBuffers()、glBindBuffers()、glBufferData(),下面图片来自红宝书第一章第五节:

glBindBuffer的8种类型的绑定点

1.GL_ARRAY_BUFFER

顶点缓冲对象:Vertex Buffer Object,VBO,配合顶点数组对象使用。

unsigned int VBO;

glGenBuffers(1, &VBO);

glBindBuffer(GL_ARRAY_BUFFER, VBO);

glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

2.GL_ELEMENT_ARRAY_BUFFER

索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO,配合glDrawElements使用。

unsigned int EBO;

glGenBuffers(1, &EBO);

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);

glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW)

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);

glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);;

3.GL_TEXTURE_BUFFER

图片缓冲对象:Texture Buffer Object,TBO,配合glTexBuffer使用。Shader中变量为uniform samplerBuffer,使用texelFetch采样。

详情请见OpenGL红宝书第六章第八节-复杂纹理类型-缓存纹理。

4.GL_UNIFORM_BUFFER

uniform缓冲区对象,UBO,当有复杂的uniform数据传输时很有用。

详情请见OpenGL红宝书第二章第四节-数据块接口。

5.GL_TRANSFORM_FEEDBACK_BUFFER

变换反馈缓冲区对象,后面有一章专门介绍这个,可以利用它在GPU中做一些物理模拟。

详情请见OpenGL红宝书第五章第四节-transform feedback。

6.GL_PIXEL_PACK_BUFFER和GL_PIXEL_UNPACK_BUFFER

像素缓冲区对象,PBO。

详情请见OpenGL红宝书第6.5.2节-使用Pixel Unpack缓存。

与之类似的还有:

7.GL_COPY_READ_BUFFER和GL_COPY_WRITE_BUFFER

复制缓冲区

详情请见OpenGL蓝宝书第9.1.2节-复制缓冲区。

8.GL_DRAW_INDIRECT_BUFFER

这个暂时没有看见具体的用法,以后补充。

总结

由glGenBuffers()、glBindBuffers()、glBufferData()创建的缓冲区,以及其绑定的八种类型的绑定点是OpenGL中非常核心的一部分,OpenGL红宝书和蓝宝书中介绍的很多相关知识,基本上整本书都在围绕着这些缓冲区。红宝书上的每种缓冲区的例子在第一篇-概述提供的github网站中均可以找到。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3