OpenGL 2.1: glMapBuffer and usage hints
我一直在使用
但是,最近有人建议我在Stack Overflow上使用
使用
-
如果您从未在该VBO上调用
glBufferData ,在该VBO上使用glMapBuffer 是否有效? - 如果是这样,由于未得到提示,OpenGL如何猜测其用法?
-
glMapBuffer 与glBufferData 的优点/缺点是什么? (我知道他们做的事情不完全相同。但是似乎通过使用glMapBuffer 获取指针,然后写入该地址,您可以执行glBufferData 相同的操作。)
- Is it valid to use glMapBuffer on a given VBO if you've never called glBufferData on that VBO?
否,因为要映射一些内存,因此必须首先分配它。
- If so, how does OpenGL guess the usage, since it hasn't been given a hint?
不是。您必须至少调用一次glBufferData才能初始化缓冲区对象。如果您不想实际上传数据(因为要使用glMapBuffer),则只需为数据指针传递一个null指针即可。这与glTexImage一样工作,在glTexImage中创建了一个缓冲区/纹理对象,并使用glBufferSubData / glTexSubImage填充该对象,或者在使用缓冲区对象的情况下,以及通过内存映射来填充该对象。
- What are the advantages/disadvantages of glMapBuffer vs glBufferData? (I know they don't do exactly the same thing. But it seems that by getting a pointer with glMapBuffer and then writing to that address, you can do the same thing glBufferData does.)
否,这似乎无效。您必须调用
关于哪一个更快,我和整个互联网似乎都没有明确的答案。只需对其进行测试即可查看。