summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/raster_bucket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer/raster_bucket.cpp')
-rw-r--r--src/mbgl/renderer/raster_bucket.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/mbgl/renderer/raster_bucket.cpp b/src/mbgl/renderer/raster_bucket.cpp
new file mode 100644
index 0000000000..85bb66970e
--- /dev/null
+++ b/src/mbgl/renderer/raster_bucket.cpp
@@ -0,0 +1,36 @@
+#include <mbgl/renderer/raster_bucket.hpp>
+#include <mbgl/renderer/painter.hpp>
+
+using namespace mbgl;
+
+RasterBucket::RasterBucket(TexturePool& texturePool, const StyleBucketRaster& properties_)
+: properties(properties_),
+ texture(properties_),
+ raster(texturePool) {
+}
+
+void RasterBucket::render(Painter &painter, util::ptr<StyleLayer> layer_desc, const Tile::ID &id, const mat4 &matrix) {
+ painter.renderRaster(*this, layer_desc, id, matrix);
+}
+
+bool RasterBucket::setImage(const std::string &data) {
+ return raster.load(data);
+}
+
+void RasterBucket::drawRaster(RasterShader& shader, StaticVertexBuffer &vertices, VertexArrayObject &array) {
+ raster.bind(true);
+ shader.u_image = 0;
+ array.bind(shader, vertices, BUFFER_OFFSET(0));
+ glDrawArrays(GL_TRIANGLES, 0, (GLsizei)vertices.index());
+}
+
+void RasterBucket::drawRaster(RasterShader& shader, StaticVertexBuffer &vertices, VertexArrayObject &array, GLuint texture_) {
+ raster.bind(texture_);
+ shader.u_image = 0;
+ array.bind(shader, vertices, BUFFER_OFFSET(0));
+ glDrawArrays(GL_TRIANGLES, 0, (GLsizei)vertices.index());
+}
+
+bool RasterBucket::hasData() const {
+ return raster.isLoaded();
+}