OpenGL的顶点数组对象是否存储在VRam中?
我真正要问的是:如果我加载一个模型,例如使用Assimp,那么将顶点和indice数据读入顶点数组对象; 我会在Ram中复制数据,还是将其复制到GPU?
Nic*_*las 10
这里似乎缺乏对OpenGL术语的理解.
您无法将"顶点和指数数据"读入" 顶点数组对象".它们实际上并不存储数据; 数据数组存储在缓冲区对象中.VAO仅引用它们.VAO描述了这些缓冲区中的数据是如何格式化的,以便OpenGL能够理解它们的含义.
如果您询问客户端顶点数组(注意缺少单词"object",尽管您可以将客户端顶点数组与VAO一起使用),那么根据定义它们不会存储在GPU上.客户端顶点数组的"客户端"是用户的代码.IE:您分配,拥有和管理的内存.
如果你问的是缓冲区对象的使用,是的,缓冲区对象存储驻留在"服务器"上(即:OpenGL实现拥有的内存).在任何特定时间点,它是否实际上都在GPU上,这不是您可以确定的.但在调用glBufferData,glBufferSubData或其他更新缓冲区对象的此类函数后,服务器已复制该数据.