- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为glBindBuffer(target, buffer)
的作用是将缓冲区的地址存储在目标上,这是一个特殊的地址。
但我找到了glBindBufferBase(target, index, buffer)
。我认为target应该是一个数组,这个操作根据索引将缓冲区地址存储到数组中。
如果我的想法是正确的,那么 glBindBuffer
相当于 glBindBufferBase(target, someindex, buffer)
?
也许someindex
是0?
最佳答案
它们的用途不同。
glBindBuffer
用于将缓冲区绑定(bind)到特定目标,以便所有修改该目标的操作随后都映射到该缓冲区。
glBindBufferBase
用于完全不同的目的,它用于将缓冲区绑定(bind)到索引数组中的特定绑定(bind)点(当数据不应该直接修改而是使用时)。虽然这看起来可能很复杂,但其实很容易看出。假设您想将统一 block 传递给着色器,那么您有一个表,它将命名缓冲区映射到数组中的特定索引,然后将其映射到着色器中的绑定(bind),如下图所示:
因此,glBindBufferBase
在右侧创建箭头,在其中指定索引,而 glBindBuffer
只是将缓冲区绑定(bind)到特定目标。
然后,您可以使用 glGetUniformBlockIndex
获取着色器中的正确索引,然后通过 glUniformBlockBinding
将其链接到绑定(bind)点(左箭头)。
关于opengl - glBindBuffer 和 glBindBufferBase 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54955186/
我认为glBindBuffer(target, buffer)的作用是将缓冲区的地址存储在目标上,这是一个特殊的地址。 但我找到了glBindBufferBase(target, index, buf
使用 UBO 时,我们将统一 block 绑定(bind)到绑定(bind)点。然后我们还将UBO绑定(bind)到同一个绑定(bind)点:像这样: glUseProgram(ProgramName
我的着色器中有一组统一 block ,其定义如下: layout (std140) uniform LightSourceBlock { int shadowMapID; int ty
我正在编写一个使用 OpenGL >= 4.3 的粒子模拟,但遇到了一个“问题”(或者更确切地说是没有问题),这让我很困惑。 对于计算着色器部分,我使用了各种 GL_SHADER_STORAGE_BU
我是一名优秀的程序员,十分优秀!