#pragma once #include #include #include namespace mbgl { class BinaryProgram { public: // Initialize a BinaryProgram object from a serialized represenation. BinaryProgram(std::string&& data); BinaryProgram(gl::BinaryProgramFormat, std::string&& binaryCode, const std::string& binaryIdentifier, std::vector>&&, std::vector>&&); std::string serialize() const; gl::BinaryProgramFormat format() const { return binaryFormat; } const std::string& code() const { return binaryCode; } const std::string& identifier() const { return binaryIdentifier; } gl::AttributeLocation attributeLocation(const std::string& name) const; gl::UniformLocation uniformLocation(const std::string& name) const; private: gl::BinaryProgramFormat binaryFormat = 0; std::string binaryCode; std::string binaryIdentifier; std::vector> attributes; std::vector> uniforms; }; } // namespace mbgl