本文整理汇总了C++中MeshPtr::_determineAnimationTypes方法的典型用法代码示例。如果您正苦于以下问题:C++ MeshPtr::_determineAnimationTypes方法的具体用法?C++ MeshPtr::_determineAnimationTypes怎么用?C++ MeshPtr::_determineAnimationTypes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MeshPtr
的用法示例。
在下文中一共展示了MeshPtr::_determineAnimationTypes方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: XMLToBinary
void XMLToBinary(XmlOptions opts)
{
// Read root element and decide from there what type
String response;
TiXmlDocument* doc = new TiXmlDocument(opts.source);
// Some double-parsing here but never mind
if (!doc->LoadFile())
{
cout << "Unable to open file " << opts.source << " - fatal error." << endl;
delete doc;
exit (1);
}
TiXmlElement* root = doc->RootElement();
if (!stricmp(root->Value(), "mesh"))
{
delete doc;
MeshPtr newMesh = MeshManager::getSingleton().createManual("conversion",
ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
VertexElementType colourElementType;
if (opts.d3d)
colourElementType = VET_COLOUR_ARGB;
else
colourElementType = VET_COLOUR_ABGR;
xmlMeshSerializer->importMesh(opts.source, colourElementType, newMesh.getPointer());
// Re-jig the buffers?
// Make sure animation types are up to date first
newMesh->_determineAnimationTypes();
if (opts.reorganiseBuffers)
{
logMgr->logMessage("Reorganising vertex buffers to automatic layout...");
// Shared geometry
if (newMesh->sharedVertexData)
{
// Automatic
VertexDeclaration* newDcl =
newMesh->sharedVertexData->vertexDeclaration->getAutoOrganisedDeclaration(
newMesh->hasSkeleton(), newMesh->hasVertexAnimation(), newMesh->getSharedVertexDataAnimationIncludesNormals());
if (*newDcl != *(newMesh->sharedVertexData->vertexDeclaration))
{
// Usages don't matter here since we're onlly exporting
BufferUsageList bufferUsages;
for (size_t u = 0; u <= newDcl->getMaxSource(); ++u)
bufferUsages.push_back(HardwareBuffer::HBU_STATIC_WRITE_ONLY);
newMesh->sharedVertexData->reorganiseBuffers(newDcl, bufferUsages);
}
}
// Dedicated geometry
Mesh::SubMeshIterator smIt = newMesh->getSubMeshIterator();
while (smIt.hasMoreElements())
{
SubMesh* sm = smIt.getNext();
if (!sm->useSharedVertices)
{
const bool hasVertexAnim = sm->getVertexAnimationType() != Ogre::VAT_NONE;
// Automatic
VertexDeclaration* newDcl =
sm->vertexData->vertexDeclaration->getAutoOrganisedDeclaration(
newMesh->hasSkeleton(), hasVertexAnim, sm->getVertexAnimationIncludesNormals());
if (*newDcl != *(sm->vertexData->vertexDeclaration))
{
// Usages don't matter here since we're onlly exporting
BufferUsageList bufferUsages;
for (size_t u = 0; u <= newDcl->getMaxSource(); ++u)
bufferUsages.push_back(HardwareBuffer::HBU_STATIC_WRITE_ONLY);
sm->vertexData->reorganiseBuffers(newDcl, bufferUsages);
}
}
}
}
if( opts.mergeTexcoordResult != opts.mergeTexcoordToDestroy )
{
newMesh->mergeAdjacentTexcoords( uint16(opts.mergeTexcoordResult), uint16(opts.mergeTexcoordToDestroy) );
}
if (opts.nuextremityPoints)
{
Mesh::SubMeshIterator smIt = newMesh->getSubMeshIterator();
while (smIt.hasMoreElements())
{
SubMesh* sm = smIt.getNext();
sm->generateExtremes (opts.nuextremityPoints);
}
}
meshSerializer->exportMesh(newMesh.getPointer(), opts.dest, opts.endian);
// Clean up the conversion mesh
MeshManager::getSingleton().remove("conversion");
}
else if (!stricmp(root->Value(), "skeleton"))
{
delete doc;
SkeletonPtr newSkel = SkeletonManager::getSingleton().create("conversion",
ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
xmlSkeletonSerializer->importSkeleton(opts.source, newSkel.getPointer());
//.........这里部分代码省略.........
示例2: XMLToBinary
void XMLToBinary(XmlOptions opts)
{
// Read root element and decide from there what type
String response;
TiXmlDocument* doc = new TiXmlDocument(opts.source);
// Some double-parsing here but never mind
if (!doc->LoadFile())
{
cout << "Unable to open file " << opts.source << " - fatal error." << endl;
delete doc;
exit (1);
}
TiXmlElement* root = doc->RootElement();
if (!stricmp(root->Value(), "mesh"))
{
delete doc;
MeshPtr newMesh = MeshManager::getSingleton().createManual("conversion",
ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
VertexElementType colourElementType;
if (opts.d3d)
colourElementType = VET_COLOUR_ARGB;
else
colourElementType = VET_COLOUR_ABGR;
xmlMeshSerializer->importMesh(opts.source, colourElementType, newMesh.getPointer());
// Re-jig the buffers?
// Make sure animation types are up to date first
newMesh->_determineAnimationTypes();
if (opts.reorganiseBuffers)
{
logMgr->logMessage("Reorganising vertex buffers to automatic layout..");
// Shared geometry
if (newMesh->sharedVertexData)
{
// Automatic
VertexDeclaration* newDcl =
newMesh->sharedVertexData->vertexDeclaration->getAutoOrganisedDeclaration(
newMesh->hasSkeleton(), newMesh->hasVertexAnimation(), newMesh->getSharedVertexDataAnimationIncludesNormals());
if (*newDcl != *(newMesh->sharedVertexData->vertexDeclaration))
{
// Usages don't matter here since we're onlly exporting
BufferUsageList bufferUsages;
for (size_t u = 0; u <= newDcl->getMaxSource(); ++u)
bufferUsages.push_back(HardwareBuffer::HBU_STATIC_WRITE_ONLY);
newMesh->sharedVertexData->reorganiseBuffers(newDcl, bufferUsages);
}
}
// Dedicated geometry
Mesh::SubMeshIterator smIt = newMesh->getSubMeshIterator();
while (smIt.hasMoreElements())
{
SubMesh* sm = smIt.getNext();
if (!sm->useSharedVertices)
{
// Automatic
VertexDeclaration* newDcl =
sm->vertexData->vertexDeclaration->getAutoOrganisedDeclaration(
newMesh->hasSkeleton(), newMesh->hasVertexAnimation(), sm->getVertexAnimationIncludesNormals());
if (*newDcl != *(sm->vertexData->vertexDeclaration))
{
// Usages don't matter here since we're onlly exporting
BufferUsageList bufferUsages;
for (size_t u = 0; u <= newDcl->getMaxSource(); ++u)
bufferUsages.push_back(HardwareBuffer::HBU_STATIC_WRITE_ONLY);
sm->vertexData->reorganiseBuffers(newDcl, bufferUsages);
}
}
}
}
// Prompt for LOD generation?
bool genLod = false;
bool askLodDtls = false;
if (!opts.interactiveMode) // derive from params if in batch mode
{
askLodDtls = false;
if (opts.numLods == 0)
{
genLod = false;
}
else
{
genLod = true;
}
}
else if(opts.numLods == 0) // otherwise only ask if not specified on command line
{
if (newMesh->getNumLodLevels() > 1)
{
std::cout << "\nXML already contains level-of detail information.\n"
"Do you want to: (u)se it, (r)eplace it, or (d)rop it?";
while (response == "")
{
cin >> response;
StringUtil::toLowerCase(response);
if (response == "u")
{
// Do nothing
//.........这里部分代码省略.........