1.3 KiB
1.3 KiB
OpenGLDescriptorSet::Bind
void Bind() override;
作用
按照“直接使用声明 binding 编号”的规则,把当前 set 中缓存的资源绑定到 OpenGL 全局状态。
前置条件
- 需要已经通过
Initialize完成布局初始化。 - 如果要绑定纹理或采样器,通常应先调用
Update/UpdateSampler。 - 如果要绑定常量缓冲,通常应先调用
WriteConstant。
当前实现行为
- 如果常量数据处于 dirty 状态,会先创建或更新内部 UBO。
- 对每个
CBVbinding,调用glBindBufferBase(GL_UNIFORM_BUFFER, binding + i, m_constantBuffer)。 - 对
SRV/UAV/Sampler,使用初始化时申请的 texture unit 逐个绑定。 - 普通纹理路径统一调用
glBindTexture(GL_TEXTURE_2D, textureId)。 - 绑定完成后将内部
m_bound置为true。
失败与限制
- 此路径不会参考
OpenGLPipelineLayout的重映射。 UAV在该函数里并不走glBindImageTexture(),更适合兼容旧式直接 binding 编号的调用方式。- 不会验证 shader 当前是否真的使用了这些 binding。