gpt4 book ai didi

c++ - 同时将单个缓冲区绑定(bind)到 SSBO 的多个索引目标

转载 作者:太空狗 更新时间:2023-10-29 21:39:10 26 4
gpt4 key购买 nike

我可以同时将单个 opengl 缓冲区绑定(bind)到多个索引目标(SSBO 目标)吗?

例如,假设我的着色器有两个具有不同绑定(bind)索引的不同统一 block 。如果我需要的信息位于同一个缓冲区中,我是否可以使用 glBindBufferRange,同时将同一缓冲区的不同范围绑定(bind)到这两个绑定(bind)索引?

我看到的另一个用例是,例如,如果我有一个带有两个统一 block 的着色器,同样具有不同的绑定(bind)索引,但这次,两个统一 block 唯一的数据成员是一个开放数组(未指定大小) .我是否可以使用 glBindBuffer 将同一缓冲区绑定(bind)到两个统一 block ,并通过代码保证仅访问缓冲区中适当范围内的数组索引?

最佳答案

我认为这样做很好。

§6.1 (...) While a buffer object is bound, GL operations on the target to which it is bound affect the bound buffer object, and queries of the target to which a buffer object is bound return state from the bound object. Operations on the target also affect any other bindings of that object

强调我的 - 这将直接表明它没问题。

§6.1.1. (...) Each target represents an indexed array of buffer object binding points, as well as a single general binding point that can be used by other buffer object manipulation functions, such as BindBuffer or MapBuffer. Both commands bind the buffer object named by buffer to both the general binding point, and to the binding point in the array given by index. If the binds are successful no change is made to the state of the bound buffer object, and any previous bindings to the general binding point or to the binding point in the array are broken

我从中提炼出的是,并没有明确禁止将缓冲区范围绑定(bind)到多个位置,因此,我认为这是允许的。它不会破坏该数组中的其他绑定(bind),这意味着先前绑定(bind)的范围应保持不变且有效。

也就是说,如果范围重叠并且您正在写入它们,您可能需要障碍。

关于c++ - 同时将单个缓冲区绑定(bind)到 SSBO 的多个索引目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631399/

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