970 B
970 B
OpenGLShader::GetUniformInfos()
const std::vector<UniformInfo>& GetUniformInfos() const override;
作用
返回当前 program 的 uniform 反射结果集合。
当前实现行为
- 首次调用时执行
CacheUniformInfos() - 通过
glGetProgramInterfaceiv(..., GL_UNIFORM, GL_ACTIVE_RESOURCES, ...)枚举 uniform - 对每个资源读取:
- 名称长度
- 类型
- 偏移
- 数组大小
- 根据部分常见 GL 类型估算
size - 把结果缓存到
m_uniformInfos - 后续调用直接返回缓存
需要特别注意
bindPoint当前使用的是枚举到的资源索引,不等同于显式 layout bindingsize只覆盖部分常见标量、向量、矩阵类型,其他类型可能得到0- 这套缓存会在成功编译后重置,并在 Shutdown 时清空