合并瓦片成大的图片
void MapGenerator::getTiles(const std::vector<TileImage> &vec) { data_.clear(); int rowNum; int colNum; std::tie(colNum, rowNum) = tileTex_.textureSize; const int channels = 3; const int tileW = defs::tileSide * channels; const int texW = tileW * colNum; data_.resize(defs::tileSide * tileW * rowNum * colNum, 0); const auto &tiles = tileTex_.tiles; int w; int h; int chans; stbi_set_flip_vertically_on_load(true); for (const auto &ti : vec) { const auto &data = ti.data.data; if (data.empty()) { continue; } auto it = tiles.find(ti.head); if (it != tiles.end()) { const auto &row = it->second.row; const auto &col = it->second.col; auto buffer = stbi_load_from_memory(&data[0], data.size(), &w, &h, &chans, STBI_rgb); for (int i = 0; i < defs::tileSide; ++i) { memcpy(&data_[(row * defs::tileSide + i) * texW + col * tileW], &buffer[i * tileW], tileW); } stbi_image_free(buffer); } } }
----------------------------------