There's an Ogre in my Metro...
I could/should have saved this project for a Metro Monday post, but, well, I couldn't wait on this any longer.
This project had me at "... includes binaries of Ogre, FreeImage, Hydrax and SkyX for x64, x86 and ARM in both Debug and Release flavors and is configured to automatically link the right versions of those libraries"...
Thanks to Eugene’s work on porting Ogre to WinRT/Metro all I had to do was pick up his changes, reapply them to my sources and generate projects via Visual C++ 11 Beta (CMake is great and all that, but I already had some projects from my Mogre builds and wanted to customize a few things). The ARM debug build was a bit tricky, I had to use LTCG just so the linker wouldn’t blow up from the size of the object files.
In the end I managed to build a working set of Ogre WinRT binaries:
You can download a minimal example application that will compile and run out-of-the-box as long as you have the Windows 8 Consumer Preview and Visual Studio 11 Beta installed. It includes binaries of Ogre, FreeImage, Hydrax and SkyX for x64, x86 and ARM in both Debug and Release flavors and is configured to automatically link the right versions of those libraries.
Requires Windows 8 Consumer Preview and Visual Studio 11 Beta (I’m running the Express edition, but have Professional installed also, so it may or may not work with Express alone). The Demo package contains the example project and all compiled Ogre DLLs you need to get going. The Sources-and-Patches package contains the Ogre source code and is useful if you want to compile and debug Ogre yourself.
As you probably already know if you’re interested in WinRT development, many of the Windows API methods are not accessible to WinRT applications. Visual C++ 11 Beta helps you by removing forbidden API methods if you compile a WinRT project, and to detect things such as linking to a non-WinRT DLL that uses forbidden API methods, the Windows App Certification Kit is used. If you submit anything to the Windows Store, Microsoft will do its own checks, which at the very least include running the Windows App Certification Kit. If that fails, your app will not be accepted.
The current Ogre WinRT build passes validation with these exceptions:
- PluginCgProgramManager uses NVidia’s CG toolkit. You can use it for development, but your final product must not load or use this plugin
- RenderSystemDirect3D11 relies on D3DCompiler_44.dll, which is not WinRT-clean. We have to see whether Microsoft provides an HLSL compiler that can be used from WinRT or if we need to compile all shaders ahead of time and only ship their compiled versions.
Metro, like it or not, is the next frontier for many and while we'll be seeing a bunch of "normal" app's on it, I dig the thought of seeing app's built with Orge and the like... Talk about pushing the edges of Metro...