今天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工程,效果如下