Files
XCEngine/docs/api/XCEngine/RHI/OpenGL/OpenGLDescriptorSet/Bind.md

1.3 KiB
Raw Blame History

OpenGLDescriptorSet::Bind

void Bind() override;

作用

按照“直接使用声明 binding 编号”的规则,把当前 set 中缓存的资源绑定到 OpenGL 全局状态。

前置条件

当前实现行为

  • 如果常量数据处于 dirty 状态,会先创建或更新内部 UBO。
  • 对每个 CBV binding调用 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。

相关文档