diff options
Diffstat (limited to 'src/mbgl/renderer/raster_bucket.cpp')
-rw-r--r-- | src/mbgl/renderer/raster_bucket.cpp | 36 |
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(); +} |