-public:
- typedef unsigned LayoutHash;
- struct UniformBlockInfo;
-
- struct UniformInfo
- {
- std::string name;
- const UniformBlockInfo *block;
- union
- {
- int location;
- unsigned offset;
- };
- unsigned array_size;
- unsigned array_stride;
- unsigned matrix_stride;
- DataType type;
-
- UniformInfo();
- };
-
- struct UniformBlockInfo
- {
- std::string name;
- unsigned data_size;
- int bind_point;
- std::vector<const UniformInfo *> uniforms;
- LayoutHash layout_hash;
-
- UniformBlockInfo();
- };
-
- struct AttributeInfo
- {
- std::string name;
- unsigned location;
- unsigned array_size;
- DataType type;
-
- AttributeInfo();
- };
-
- typedef std::map<std::string, UniformInfo> UniformMap;
- typedef std::map<std::string, UniformBlockInfo> UniformBlockMap;
- typedef std::map<std::string, AttributeInfo> AttributeMap;
-
-private:
- unsigned id;
- std::vector<unsigned> stage_ids;
- const Module *module;
- bool linked;
- UniformBlockMap uniform_blocks;
- UniformMap uniforms;
- LayoutHash uniform_layout_hash;
- AttributeMap attributes;