6

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

“...您可以通过将顶点数据移动到 GPU 上的 OpenGL 内存来释放 CPU 内存。”

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

虽然开发人员习惯于对 CPU 的内存限制有一个参考框架,但学习 OpenGL 部分具有挑战性,因为我不太了解 GPU 以及对它们的硬件有什么期望。所以当我读到像上面这样含糊不清的陈述时,我会感到紧张。

4

2 回答 2

11

OpenGL 有一个抽象的设备和内存模型。从技术上讲,在 OpenGL 的世界中,没有 CPU 和 GPU 内存,而是客户端服务器内存。OpenGL 缓冲区对象位于服务器端。服务器,这只是意味着 OpenGL 驱动程序抽象出来的所有内容。如果像缓存一样的 GPU 内存不足,OpenGL 驱动程序完全可以将数据从 GPU 交换到 CPU。因此,你的书说:

“...您可以通过将顶点数据移动到 GPU 上的 OpenGL 内存来释放 CPU 内存。”

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

于 2013-02-28T15:13:49.193 回答
1

规格要求最低,但总的来说,GPU 内存量是相当广泛的可用信息,您在购买 PC 时肯定会注意到(被卖家夸大了)。但是,正如@datenwolf 所说,您无法真正知道数据的实际位置;重要的是您可以销毁临时缓冲区。

无论使用何种技术,您都应该考虑目标硬件的功能。

于 2013-02-28T16:08:53.173 回答