void BrfData::Merge(const BrfData& b){ mergeVec(mesh, b.mesh); mergeVec(texture, b.texture); mergeVec(shader, b.shader); mergeVec(material, b.material); mergeVec(skeleton, b.skeleton); mergeVec(animation, b.animation); mergeVec(body, b.body); }
//自顶向下的归并排序 void mergeSort(std::vector<int>& srcVec, int low, int high, std::vector<int>& tmpVec) { if (low < high) { int mid = (low + high) / 2; mergeSort(srcVec, low, mid, tmpVec); mergeSort(srcVec, mid + 1, high, tmpVec); mergeVec(srcVec, low, mid, high, tmpVec); } }
//自底向上的归并排序 void MergeSortBU(std::vector<int>& srcVec) { std::vector<int> tmpVec; tmpVec.resize(srcVec.size()); int length = srcVec.size(); for (int sz = 1; sz < length; sz *= 2) { for (int lo = 0; lo < length - sz; lo += 2 * sz) { mergeVec(srcVec, lo, lo + sz + -1,std::min(lo + 2 * sz - 1, length - 1), tmpVec); } } }