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

时间:2013-02-28 14:50:36

标签: opengl graphics opengl-es gpu

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

  

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

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

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

2 个答案:

答案 0 :(得分:9)

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

  
    

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

  

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

答案 1 :(得分:0)

规范中有 minimal 要求,但一般来说,GPU内存的数量是非常广泛可用的信息,您在购买PC时会注意到这些信息(卖家夸大其词)。然而,正如@datenwolf所说,你无法真正知道数据的实际位置;重要的是你可以摧毁你的临时缓冲区。

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