The second bullet (Versioned Mesh Writing) is now complete too.
The MeshSerializer interface has been expanded so there are now variants of the exportMesh() method that take a MeshVersion parameter, which is defined thus:
Code: Select all
/// Mesh compatibility versions
enum MeshVersion
{
/// Latest version available
MESH_VERSION_LATEST,
/// OGRE version v1.8+
MESH_VERSION_1_8,
/// OGRE version v1.7+
MESH_VERSION_1_7,
/// OGRE version v1.4+
MESH_VERSION_1_4,
/// OGRE version v1.0+
MESH_VERSION_1_0,
/// Legacy versions, DO NOT USE for writing
MESH_VERSION_LEGACY
};
As you can see, you identify the version you want by the OGRE version rather than the Mesh version you see in the mesh files, that due to historical issues and external contributions has not been in sync with the actual OGRE version all the time so is more confusing. Internally the mesh strings are the same, although I've made the effort to bring them back in sync in 1.8 at least.
OgreMeshUpgrader now has an additional '-V' parameter which lets you specify the version of mesh you want to write, and also lets you downgrade meshes as well as upgrade them, which is what I've tested with.
I've only tested back to 1.6, I don't have any apps built for 1.4 or earlier anymore and don't have the time to build any (not least because I have to go outside of Mercurial to do that). However the code to write the parts of the data that changed was lifted directly from the old versions of OGRE so all should be well.