Я просто предполагаю, если есть какие-либо возможности для повышения производительности на этот код:Есть ли какие-либо улучшения в этом коде?
std::vector<int>actualUvIndex(polyCount * 3, 0);
for (int i = 0; i < actualUvIndex.size(); i++)
{
actualUvIndex[i] = i;
}
#pragma omp parallel for schedule(dynamic)
for (int group = 0; group < groupList.size(); group++)
{
//take care per group only
for (int si = 0; si < groupList[group].size(); si++)
{
//take care per vertex
for (int v = 0; v < 3; v++)
{
int externalindex = groupList[group][si]->uvindex[v];
//if it has been changed forget about it
if (actualUvIndex[externalindex] == externalindex)
{
//compare with the rest of faces inside the group
for (int sib = si + 1; sib < groupList[group].size(); sib++)
{
for (int vb = 0; vb < 3; vb++)
{
int internalindex = groupList[group][sib]->uvindex[vb];
//if it has been changed forget about it
if (actualUvIndex[internalindex] == internalindex)
{
//if both uv vertex are equal just assign the same vertex index
if (groupList[group][sib]->uvs[vb][0] == groupList[group][si]->uvs[v][0] && groupList[group][sib]->uvs[vb][1] == groupList[group][si]->uvs[v][1])
actualUvIndex[internalindex] = externalindex;
}
}
}
}
}
}
}
Позвольте мне объяснить это немного: у меня есть геометрия (да это о 3d сетках) расщепляется в группах, поэтому имеет смысл изолировать каждый из них.
Каждая группа содержит грани и каждую грань 3 вершины. Я могу получить индекс каждой вершины, обращаясь к группе-> face-> uvindex.
actualUvIndex - это вектор для управления индексом каждой вершины.
Очевидно, мое намерение состоит в том, чтобы упростить и присвоить первый индекс, найденный избыточной вершиной, что означает избыточность вершины, разделяющей их позицию, которая хранится в uvs [] [0] и uvs [] [1], обратите внимание, что поскольку это Увс у них только две оси.
С уважением и благодарю вас за любой совет.
Вы должны перейти к конвертации стека codereview. вопрос больше подходит там – Hayt
На какой платформе вы работаете? Какой компилятор и какие параметры компилятора вы используете? –
С самого начала ... 'for (int i = 0; i
erip