VBO等使用的"OpenGL内存"的位置和内容

joh*_*ers 4 opengl graphics gpu opengl-es

我正在学习如何使用VBO,正如书中所说,

"...你可以通过将顶点数据移动到GPU上的OpenGL内存来释放CPU内存."

那么,在这方面,GPU究竟能处理什么呢?假设"OpenGL内存"可以存储数百万个多边形的顶点数据,这是否可以接受?移动设备中的GPU怎么样?

虽然开发人员习惯于在CPU上设置内存限制的参考框架,但学习OpenGL部分具有挑战性,因为我对GPU以及对硬件的期望不太了解.因此,当我读到如上所述的模糊陈述时,它让我感到紧张.

dat*_*olf 9

OpenGL有一个抽象设备和内存模型.在技​​术上,在OpenGL的世界里,没有CPU和GPU内存,而是客户端服务器内存.OpenGL缓冲区对象存在于服务器端.服务器,它只是意味着OpenGL驱动程序抽象出来的一切.如果GPU内存(就像缓存一样)是不够的,那么完全允许OpenGL驱动程序将数据从GPU交换到CPU.因此,你的书指出:

"...你可以通过将顶点数据移动到GPU上的OpenGL内存来释放CPU内存."

不完全正确,因为OpenGL缓冲区对象中的数据可能很好地驻留在CPU内存中.