本文整理汇总了C++中SubMesh::loadMaterial方法的典型用法代码示例。如果您正苦于以下问题:C++ SubMesh::loadMaterial方法的具体用法?C++ SubMesh::loadMaterial怎么用?C++ SubMesh::loadMaterial使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SubMesh
的用法示例。
在下文中一共展示了SubMesh::loadMaterial方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: load
//.........这里部分代码省略.........
vtx.a = color.a;
// save vertex vba
vtx.vba.resize(weights[vtxIdx].length());
for (int j=0; j<weights[vtxIdx].length(); j++)
{
vtx.vba[j] = (weights[vtxIdx])[j];
}
// save joint ids
vtx.jointIds.resize(jointIds[vtxIdx].length());
for (int j=0; j<jointIds[vtxIdx].length(); j++)
{
vtx.jointIds[j] = (jointIds[vtxIdx])[j];
}
// save vertex texture coordinates
vtx.u.resize(uvsets.length());
vtx.v.resize(uvsets.length());
for (int j=0; j<uvsets.length(); j++)
{
float2 uv;
stat = faceIter.getUV(triVertexIdx[i],uv,&uvsets[j]);
if (MS::kSuccess != stat)
{
uv[0] = 0;
uv[1] = 0;
}
vtx.u[j] = uv[0];
vtx.v[j] = (-1)*(uv[1]-1);
}
vtx.next = -1;
vertices.push_back(vtx);
// save vertex index in face info
newFace.v[i] = vertices.size()-1;
vertices[idx].next = vertices.size()-1;
}
else
{
newFace.v[i] = idx;
}
}
} // end iteration of triangle vertices
// add face info to the array corresponding to the submesh it belongs
// skip faces with no shaders assigned
if (shaderPolygonMapping[faceIter.index()] >= 0)
polygonSets[shaderPolygonMapping[faceIter.index()]].push_back(newFace);
} // end iteration of triangles
}
}
std::cout << "done reading mesh triangles\n";
// create a submesh for every different shader linked to the mesh
unsigned shaderLength = shaders.length();
for (int i=0; i<shaderLength; i++)
{
// check if the submesh has at least 1 triangle
if (polygonSets[i].size() > 0)
{
//create new submesh
SubMesh* pSubmesh = new SubMesh();
const char *nm = mesh.name().asChar();
const char *nm1 = mesh.partialPathName().asChar();
const char *nm2 = mesh.parentNamespace().asChar();
const char *nm3 = mesh.fullPathName().asChar();
const char *nm4 = meshDag.fullPathName().asChar();
pSubmesh->m_name = meshDag.partialPathName();
if(pDagPath)
pSubmesh->m_name = pDagPath->partialPathName();
const char *szName = pSubmesh->m_name.asChar();
if(shaderLength > 1)
{
char a[256];
sprintf(a,"%d",i);
pSubmesh->m_name += a;
}
OutputDebugString(pSubmesh->m_name.asChar());
OutputDebugString("\n");
//OutputDebugString(szName);
//OutputDebugString("\n");
//load linked shader
stat = pSubmesh->loadMaterial(shaders[i],uvsets);
if (stat != MS::kSuccess)
{
MFnDependencyNode shadingGroup(shaders[i]);
std::cout << "Error loading submesh linked to shader " << shadingGroup.name().asChar() << "\n";
return MS::kFailure;
}
//load vertex and face data
stat = pSubmesh->load(polygonSets[i],vertices,points,normals,opposite);
//add submesh to current mesh
m_submeshes.push_back(pSubmesh);
}
}
return MS::kSuccess;
}