说我只想创建并填充一个缓冲区。
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
target上,并使用数据将其数据填充使用glBindBufferRange
?
这没关系;任何目标都应起作用。我已经创建了具有与预期用法相匹配的目标的缓冲区,但没有任何区别。
我猜我的OpenGL实现(即驱动程序(可以根据传递的目标分配内存不同,但我没有看到有关此的证据。
另外,在不需要以前的glBindBuffer
呼叫的情况下,与glBufferData
相同的较新的glNamedBufferData
没有target
参数。这强烈暗示目标是可以互换的。