1

我对 OpenGL ES 存储机制很感兴趣。它是否将任何数据复制到自己的内存中,还是仅存储指向数据的指针。如果没有应对(什么是合乎逻辑的),那么为什么使用 VBO。

4

2 回答 2

1

关键是要记住 OpenGL(ES) 是作为客户端-服务器模型构建的……这意味着通常“CPU”是客户端,“GPU”是服务器。

这两个有不同的内存存储。当您想要绘制一些顶点时,您需要将其从“CPU”发送到“GPU”,这通常涉及将数据从系统内存复制到 GPU 内存。每一帧你都需要一遍又一遍地发送它来执行绘图......它当然很慢。

VBO 是将这些顶点数据存储在 GPU 上然后简单地避免复制的方式......只需添加一个命令“Draw”,数据将不是从系统内存中获取,而是从 GPU 内存中获取。那会快得多。

于 2012-05-10T22:01:24.530 回答
0

纹理和缓冲对象最终彼此没有关系。无论如何都没有直接关系。

但是,它们确实有一些相似之处。它们都代表 OpenGL 分配的内存。因此,任何上传到他们的数据都是复制操作。甚至纹理。

于 2012-05-10T17:23:40.380 回答