我正在学习如何使用 VBO,正如书中所说,
“...您可以通过将顶点数据移动到 GPU 上的 OpenGL 内存来释放 CPU 内存。”
那么,GPU 在这方面究竟能处理什么?假设“OpenGL 内存”可以存储数百万个多边形的顶点数据是否可以接受?移动设备中的 GPU 怎么样?
虽然开发人员习惯于对 CPU 的内存限制有一个参考框架,但学习 OpenGL 部分具有挑战性,因为我不太了解 GPU 以及对它们的硬件有什么期望。所以当我读到像上面这样含糊不清的陈述时,我会感到紧张。
OpenGL 有一个抽象的设备和内存模型。从技术上讲,在 OpenGL 的世界中,没有 CPU 和 GPU 内存,而是客户端和服务器内存。OpenGL 缓冲区对象位于服务器端。服务器,这只是意味着 OpenGL 驱动程序抽象出来的所有内容。如果像缓存一样的 GPU 内存不足,OpenGL 驱动程序完全可以将数据从 GPU 交换到 CPU。因此,你的书说:
“...您可以通过将顶点数据移动到 GPU 上的 OpenGL 内存来释放 CPU 内存。”
不完全正确,因为 OpenGL 缓冲区对象中的数据很可能驻留在 CPU 内存中。
规格要求最低,但总的来说,GPU 内存量是相当广泛的可用信息,您在购买 PC 时肯定会注意到(被卖家夸大了)。但是,正如@datenwolf 所说,您无法真正知道数据的实际位置;重要的是您可以销毁临时缓冲区。
无论使用何种技术,您都应该考虑目标硬件的功能。