1.6 KiB
1.6 KiB
OpenGLDescriptorSet::BindWithPipelineLayout
void BindWithPipelineLayout(
const OpenGLPipelineLayout* pipelineLayout,
uint32_t setIndex);
作用
结合 pipelineLayout 把当前 descriptor set 绑定到真正的 OpenGL binding point。这是现代 RHI 路径下的主要绑定函数。
前置条件
- descriptor set 已初始化。
setIndex应与当前 draw / dispatch 使用的 set 槽位一致。
参数
pipelineLayout: 提供set + binding -> GL binding point的映射规则。setIndex: 当前 set 在 pipeline layout 中的索引。
当前实现行为
- 如果常量数据 dirty,会先上传共享 UBO。
CBV通过OpenGLPipelineLayout::GetConstantBufferBindingPoint()获取实际 binding point。SRV通过glActiveTexture(GL_TEXTURE0 + bindingPoint)绑定为采样纹理。UAV通过glBindImageTexture(bindingPoint, textureId, 0, GL_FALSE, 0, GL_READ_WRITE, GL_RGBA8)绑定。Sampler通过glBindSampler(bindingPoint, samplerId)绑定。- 如果
pipelineLayout == nullptr或 layout 不使用 set layout,则回退为使用原始binding编号。
当前限制
SRV仍然固定按GL_TEXTURE_2D绑定。UAV固定使用GL_RGBA8,并且固定使用 mip0、layer0。- 该函数不会检查 shader 反射结果与 layout 是否一致。