2

OpenGL 的顶点数组对象是否存储在 VRam 中?

我真正要问的是:如果我加载模型,例如使用 Assimp,然后将顶点和索引数据读入顶点数组对象;我会在 Ram 中复制数据,还是将其复制到 GPU?

4

1 回答 1

10

这里似乎缺乏对 OpenGL 术语的理解。

您不能将“顶点和索引数据”读入Vertex Array Objects。他们实际上并不存储数据;数据数组存储在缓冲区对象中。VAO 仅引用它们。VAO 描述了这些缓冲区中的数据是如何格式化的,以便 OpenGL 可以理解它们的含义。

如果您询问客户端顶点数组(请注意缺少“对象”一词,尽管您可以将客户端顶点数组与 VAO 一起使用),那么根据定义,它们不会存储在 GPU 上。客户端顶点数组的“客户端”是用户的代码。IE:您分配、拥有和管理的内存。

如果您询问缓冲区对象的使用,是的,缓冲区对象存储驻留在“服务器”上(即:OpenGL 实现拥有的内存)。您无法确定它是否在任何特定时间点实际在 GPU 上。但是,在您调用glBufferDataglBufferSubData或其他更新缓冲区对象的此类函数之后,服务器已复制了该数据。

于 2012-10-13T01:04:44.217 回答