转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=3145

使用了CMakeMS之后,支持Windows Phone 8+平台就成了理所当然的一件事情了。Boost 1.56已经能支持store和phone,在进一步解决了Phyton和7z在WP下的编译之后,我就开始尝试编译KlayGE本身。

下面讨论的WP,特指VS2013支持的WP8.1。WP8.0还没时间测试。

事实上,因为原先已经可以编译成store版本,切换到WP非常顺利。只有一处需要修改:WP上没有VersionHelpers.h,而且WinRT上也用不到。所以只要#ifndef掉就可以了。除此之外,没有任何别的修改,WP版本就可以顺利编译出来了。

在用模拟器运行的时候,出现了一个异常,WP有声明但没有实现CoreCursor。WP上不需要鼠标指针。同样,这里只需要一个#ifndef跳过那句就可以了。于是,KlayGE的大部分例子都可以在WP模拟器里顺利运行了。

另一个需要注意的是,WP上的默认DPI不是96,所以窗口大小需要额外换算才能得到pixel数。

目前,在内存为512M的WP模拟器里,只有DeferredRendering、GlobalIllumination和Ocean三个例子无法运行。在内存为1G的模拟器里,Ocean可以,其他两个仍然因为内存不足运行失败。这仍需要以后继续改进。以下是一些截图:

EnvLighting:
EnvLighting_WP

Ocean,使用了deferred框架:
Ocean_WP

Subsurface:
Subsurface_WP

当然,目前的WP支持还很初步,比如不能自动旋转屏幕,不能推到后台等。这些问题将会在以后一点一点完善。