VBO的第一次初始化。绑定在哪里重要?

时间:2018-02-15 21:50:58

标签: opengl buffer vbo

假设我只想创建并填充缓冲区。

GLuint ret;
glGenBuffers(1,&ret);
glBindBuffer(GL_ARRAY_BUFFER, ret);
glBufferData(GL_ARRAY_BUFFER,size,data,usage);
glBindBuffer(GL_ARRAY_BUFFER,0);

我在两个电话中使用哪个目标真的很重要吗? (当然他们必须是一样的)。 例如:我可以填充缓冲区写入GL_ARRAY_BUFFER目标,同时将其绑定到该目标上,然后在代码中将理智缓冲区绑定到GL_UNIFORM_BUFFER目标并使用它“'使用glBindBufferRange填充统一块的数据?

1 个答案:

答案 0 :(得分:0)

没关系;任何目标应该工作。我之前创建的缓冲区的目标与预期的用途相匹配,并没有任何区别。

我想OpenGL实现(即驱动程序)可以根据传递的目标不同地分配内存,但我没有看到这方面的证据。

此外,较新的glNamedBufferData与[{1}}完全相同而不需要先前的glBufferData调用,但没有glBindBuffer参数。这强烈暗示目标是可以互换的。