#pragma once #include #include #include #include #include namespace Magnum::Examples { using Vector2i = Math::Vector<2, int>; struct atlas_texture final { atlas_texture(const Trade::ImageData2D& img, Vector2i dims); std::array texcoords_for_id(int id) const; static std::array floor_quad(Vector3 center, Vector2 size); static std::array indices(int N); GL::Texture2D& texture() { return tex_; } atlas_texture(const atlas_texture&) = delete; atlas_texture& operator=(const atlas_texture&) = delete; private: GL::Texture2D tex_; Vector2i size_, dims_, tile_size_; }; } // namespace Magnum::Examples