在进行OpenGL时,我们不断定义我们正在处理的缓冲区类型。即使OpenGL Superbible说缓冲区没有真正的类型,因为它们只是"缓冲区",有人必须始终提供缓冲区类型。
那么为什么始终提供缓冲区类型作为参数很重要?每个缓冲区都有预留的内存量吗?内存位置与不同类型的缓冲区不同吗?
答案 0 :(得分:2)
嗯,这里有不同的方面需要考虑。首先,OpenGL只是一个API规范,它不会强制执行内部实现的方式 - 它适用于任何特定的内存和缓存架构等。
话虽如此,标准仍然保留了一些东西。并且一个问题是缓冲区不是"字符串类型"。你不是创建VBO,而只是一个缓冲区。即使初始绑定目标是GL_ARRAY_BUFFER
,您也可以将其用作VBO,IBO或PBO,UBO或其他任何版本。您甚至可以同时将相同的缓冲区绑定到不同的目标,例如将vertex和elemnt索引放入同一个缓冲区。所以考虑到这一点,确实没有不同的缓冲区类型。绑定目标只是在使用时为缓冲区赋予语义含义。这也是GL的标准绑定使用和绑定到修改方法。