今天WP8 SDK总算是对外公开发布了,第一时间下来测试。
果然从Win8移植比较方便,也果然少了不少东西。因为几乎完全支持D3D11接口,引擎花了不到一个钟头就初步移植过来了,但由于Direct2D,DirectWrite和WIC的缺失,文字部分无法移植,需要做的话,只能使用开源的FreeType之流了,或者干脆纹理、点阵字库。当然文字还有另外一套方案就是XAML+D3D,不过这套方案到了WP8上变成了 C# 和 C++的混合解决方案(C# App with C++ Component DLL),也没法直接移植,真不知道微软在想什么。所以干脆还是纯C++用自己的UI吧。
一些头文件如D3DCompile.h直接砍掉了,不过从Win8 SDK复制过来用没问题,因为只需要一些数据结构定义。DX11 功能级别锁定为 Feature Level 9_3 (奇怪的是Surface RT才支持9_1,看来现在手机CPU配置已经普遍高于平板了)。
另外WinRT也比Win8少了不少接口,数据,文件,传感器都精简了,Camera根本就是另一套接口...,看来真要移植还是需要花点功夫的。
总结
就目前看来,WP8很可能是急忙推出的半成品,为兼容WP7移植了整套WP7接口而已,Win8的WinRT接口只实现了一部分,或许下一版本(WP9?)就直接使用WinRT,而彻底放弃WP7(毕竟对WM6已经干过一回,而且从技术上说这样更明智)。
总之,目前还是专注Win8吧,WP8资源也太少,不浪费时间了。
试着创建WP7 XNA工程,效果如下