C++ (Qt)std::vector<Vec3> CPolySDS::CalcVerNormals( const std::vector<Vec3> & pos ) const{ std::vector<Vec3> dst(pos.size()); std::vector<Vec3> faces( mNorIndex.size() / mNumVerPerFace ); // эффективно распараллеливаем здесь for (size_t i = 0; i < mNorIndex.size(); i += mNumVerPerFace) { faces[ i / mNumVerPerFace ] = GetFaceNormal(&mNorIndex[i], mNumVerPerFace, pos); } // не очень эффективно распараллеливаем здесь for (size_t i = 0; i < mNorIndex.size(); i += mNumVerPerFace) { for (size_t j = 0; j < mNumVerPerFace; ++j) dst[mNorIndex[i + j]] += faces[ i / mNumVerPerFace ]; } // ну и далее вектор посылается на видеокарту
C++ (Qt)std::vector<int> lock(pos.size());
#pragma omp parallel for
C++ (Qt)#pragma omp parallel for schedule(dynamic, 1) // возможно др значение вместо 1
C++ (Qt)CalcVerNormals