You could just use the DXUT framework to load them, or, be like me and incorporate the loading into your own engine. All of the code is in SDKMesh.h and SDKMesh.cpp in any of the DX Samples using the DXUT Framework. If you notice the code, the framework loads the binary file as an array of bytes, and fixes the pointers to point into areas in this array. All of the pointer fixups are based on the SDK Mesh definitions.
The main thing to remember is the vertex format. The following is the format you have to use for these meshes ( atleast for the power plant model) :
struct TexNormal_VS_Input
{
float3 pos: POSITION;
float3 normal: NORMAL0;
float2 tex: TEXCOORD0;
};
If there's a difference for other models, I will definitely update this post.
Once you have this set up, the rest is the same as the framework. The good thing about the SDK Mesh format is that there are pointers reserved for the actual Buffers and texture handles. Also you do not have to allocate extra memory. All of the work is already done when you load the binary data and do the pointer fixup based on the headers. All you have to do is make sure the buffers and textures are bound to the right spot before you make the draw call. If you already have used shader reflection to determine your binding points for each of the shader resources and created a framework around that (like I did), then setting up the draw call should be straight forward.
Following is a screenshot from the engine which loads up the Power Plant SDK Mesh provided by the DX Tutorials. The shader just displays the Diffuse part of the mesh.
Next Stop: Experimenting with different lighting methods (forward vs deferred vs tiled forward vs tiled deferred)