为啥使用 VBO 和/或 IBO 而不是简单的顶点数据?
Posted
技术标签:
【中文标题】为啥使用 VBO 和/或 IBO 而不是简单的顶点数据?【英文标题】:Why use VBO's and/or IBO's as opposed to just simple Vertex Data?为什么使用 VBO 和/或 IBO 而不是简单的顶点数据? 【发布时间】:2013-05-04 03:54:40 【问题描述】:那么与使用简单的顶点数据相比,使用 VBO(顶点缓冲区对象)和 IBO(索引缓冲区对象)有什么好处?
什么时候是使用它们的好时机?将 3D 模型 加载到其中会更复杂吗?如果是这样,有什么好处? VBO/IBO 的不同有何不同?
据我了解,您将数据创建为顶点、法线等,然后将它们放入常规 缓冲区。当您制作 VBO/IBO 时,您仍然需要缓冲区,那么为什么需要为 VBO 和 IBO 提供单独的缓冲区呢?只是性能问题,还是有其他优势?
我想这一切都会利用来解决添加 VBO/IBO 代码的困难吗?
【问题讨论】:
【参考方案1】:缓冲区对象是由 OpenGL 上下文直接分配的内存,这意味着分配内存的方式和位置取决于 OpenGL 驱动程序的实现者。
这提供了一个优势,即驱动程序可以在 GPU 中分配该内存或执行对 OpenGL 客户端隐藏但大大提高性能的优化(例如,您可以避免额外的内存副本)。
您应该尽快开始使用它们,它们可能认为很复杂,但实际上非常容易,一旦您爬上了学习曲线,您就不会回头了。
编码愉快!
【讨论】:
以上是关于为啥使用 VBO 和/或 IBO 而不是简单的顶点数据?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 上的 OpenGL ES 2.0 中使用 VBO/IBO
VAO 是不是同时记住 EBO/IBO(元素或索引)和 VBO?