summaryrefslogtreecommitdiff
path: root/src/mbgl/programs/binary_program.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/programs/binary_program.hpp')
-rw-r--r--src/mbgl/programs/binary_program.hpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/mbgl/programs/binary_program.hpp b/src/mbgl/programs/binary_program.hpp
new file mode 100644
index 0000000000..8ff3863dc1
--- /dev/null
+++ b/src/mbgl/programs/binary_program.hpp
@@ -0,0 +1,43 @@
+#pragma once
+
+#include <mbgl/gl/types.hpp>
+
+#include <string>
+#include <vector>
+
+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::pair<const std::string, gl::AttributeLocation>>&&,
+ 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;
+ }
+ 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<std::pair<const std::string, gl::AttributeLocation>> attributes;
+ std::vector<std::pair<const std::string, gl::UniformLocation>> uniforms;
+};
+
+} // namespace mbgl