- DEPRECATED void attach_shader(Shader &shader);
- DEPRECATED void attach_shader_owned(Shader *shader);
- DEPRECATED void detach_shader(Shader &shader);
- DEPRECATED const std::vector<Shader *> &get_attached_shaders() const;
-
- DEPRECATED void bind_attribute(unsigned, const std::string &);
- DEPRECATED void bind_attribute(VertexAttribute, const std::string &);
- DEPRECATED void bind_fragment_data(unsigned, const std::string &);
-
- void link();
+ ReflectData::LayoutHash get_uniform_layout_hash() const { return reflect_data.layout_hash; }
+ unsigned get_n_descriptor_sets() const { return reflect_data.n_descriptor_sets; }
+ const std::vector<ReflectData::UniformBlockInfo> &get_uniform_blocks() const { return reflect_data.uniform_blocks; }
+ const ReflectData::UniformBlockInfo &get_uniform_block_info(const std::string &) const;
+ const std::vector<ReflectData::UniformInfo> &get_uniforms() const { return reflect_data.uniforms; }
+ const ReflectData::UniformInfo &get_uniform_info(const std::string &) const;
+ const ReflectData::UniformInfo &get_uniform_info(Tag) const;
+ int get_uniform_location(const std::string &) const;
+ int get_uniform_location(Tag) const;
+ int get_uniform_binding(Tag) const;
+ bool uses_uniform_block_binding(int b) const { return uses_binding(b|ReflectData::UNIFORM_BLOCK_BINDING); }
+ bool uses_texture_binding(unsigned b) const { return uses_binding(b|ReflectData::TEXTURE_BINDING); }