gpt4 book ai didi

opengl - 顶点数组对象和缓冲区对象的区别?

转载 作者:行者123 更新时间:2023-12-05 07:59:25 24 4
gpt4 key购买 nike

我刚刚开始使用 OpenGL (v. 3.3) 进行编程,我对这两个“对象”到底是什么以及如何正确使用它们感到困惑。

例如,假设我想在屏幕上绘制两个对象 - 一个球体和一个立方体。我应该创建两个 VAO 和两个缓冲区对象——每个对象一个,还是应该创建一个 VAO 和两个缓冲区对象(在其间调用 glBindBuffer()),或者创建一个 VAO 和一个缓冲区对象并调用 glBufferData() 以在绘制调用之间更新缓冲区对象?

最佳答案

首先,由于您只有静态几何体,为了获得最佳性能,您应该真正避免在绘制调用之间更新任何缓冲区数据,并且只使用静态缓冲区对象(一个用于球体,一个用于立方体,或者一个包含两个数据的对象) ).

其次,顶点数组对象捕获当前绑定(bind)的缓冲区对象,因此您需要保留两个顶点数组对象对应于两个缓冲区对象(一个用于球体,一个用于立方体),或者使用一个,如果球体和立方体的数据已合并到一个缓冲区对象中。在后一种情况下,glDrawArraysglDrawElements 的参数将允许您选择球体或立方体数据(或者两者都可以通过单个绘制调用绘制)。

关于opengl - 顶点数组对象和缓冲区对象的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com