diff options
Diffstat (limited to 'src/mbgl/gl/binary_program.hpp')
-rw-r--r-- | src/mbgl/gl/binary_program.hpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/mbgl/gl/binary_program.hpp b/src/mbgl/gl/binary_program.hpp new file mode 100644 index 0000000000..38160b62b5 --- /dev/null +++ b/src/mbgl/gl/binary_program.hpp @@ -0,0 +1,50 @@ +#pragma once + +#include <mbgl/gl/types.hpp> +#include <mbgl/util/optional.hpp> + +#include <string> +#include <vector> + +namespace mbgl { +namespace gl { + +class BinaryProgram { +public: + // Initialize a BinaryProgram object from a serialized represenation. + BinaryProgram(std::string&& data); + + BinaryProgram(gl::BinaryProgramFormat, + std::string&& binaryCode, + std::string binaryIdentifier, + std::vector<std::pair<const std::string, gl::AttributeLocation>>&&, + std::vector<std::pair<const std::string, gl::UniformLocation>>&&, + std::vector<std::pair<const std::string, gl::UniformLocation>>&&); + + std::string serialize() const; + + gl::BinaryProgramFormat format() const { + return binaryFormat; + } + const std::string& code() const { + return binaryCode; + } + const std::string& identifier() const { + return binaryIdentifier; + } + + optional<gl::AttributeLocation> attributeLocation(const std::string& name) const; + gl::UniformLocation uniformLocation(const std::string& name) const; + gl::UniformLocation textureLocation(const std::string& name) const; + +private: + gl::BinaryProgramFormat binaryFormat = 0; + std::string binaryCode; + std::string binaryIdentifier; + std::vector<std::pair<const std::string, gl::AttributeLocation>> attributes; + std::vector<std::pair<const std::string, gl::UniformLocation>> uniforms; + std::vector<std::pair<const std::string, gl::UniformLocation>> textures; +}; + +} // namespace gl +} // namespace mbgl |