gpt4 book ai didi

opengl - glBindBuffer 和 glBindBufferBase 之间的区别

转载 作者:行者123 更新时间:2023-12-02 07:17:46 24 4
gpt4 key购买 nike

我认为glBindBuffer(target, buffer)的作用是将缓冲区的地址存储在目标上,这是一个特殊的地址。
但我找到了glBindBufferBase(target, index, buffer)。我认为target应该是一个数组,这个操作根据索引将缓冲区地址存储到数组中。
如果我的想法是正确的,那么 glBindBuffer 相当于 glBindBufferBase(target, someindex, buffer)
也许someindex是0?

最佳答案

它们的用途不同。

glBindBuffer 用于将缓冲区绑定(bind)到特定目标,以便所有修改该目标的操作随后都映射到该缓冲区。

glBindBufferBase 用于完全不同的目的,它用于将缓冲区绑定(bind)到索引数组中的特定绑定(bind)点(当数据不应该直接修改而是使用时)。虽然这看起来可能很复杂,但其实很容易看出。假设您想将统一 block 传递给着色器,那么您有一个表,它将命名缓冲区映射到数组中的特定索引,然后将其映射到着色器中的绑定(bind),如下图所示:

enter image description here

因此,glBindBufferBase 在右侧创建箭头,在其中指定索引,而 glBindBuffer 只是将缓冲区绑定(bind)到特定目标。

然后,您可以使用 glGetUniformBlockIndex 获取着色器中的正确索引,然后通过 glUniformBlockBinding 将其链接到绑定(bind)点(左箭头)。

关于opengl - glBindBuffer 和 glBindBufferBase 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54955186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com