OpenGL(ES)如何存储纹理/顶点

时间:2012-05-10 14:16:17

标签: opengl-es

我对OpenGL ES存储机制感兴趣。它是否将任何数据复制到自己的内存中,或者只存储指向数据的指针。如果没有完成复制(逻辑是什么),那么为什么要使用VBO。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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