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

KlayGE的空框架跑起来之后,经过几天艰苦的debug,修正了多个KlayGE的bug,绕开更多Android的bug。现在,Text和Vertex displacement两个例子已经能在Android上顺利执行了。

KlayGE Text on Android x86Text例子。乱码不是bug,只因为系统区域没设置成中文。

KlayGE Vertex Displacement on Android x86Vertex displacement例子。

在移植的过程中,遇到的一个麻烦是NDK的ANativeWindow_getWidth和ANativeWindow_getHeight总是返回1,无法得到正确的窗口大小。结果viewport被错误地设置成1×1,使得渲出的东西都只有1个pixel。在修改了native_app_glue,获取resize的消息后,viewport大小终于得到了正确的设置。那两个例子才因此能正常执行。从这里也可以看出,Android的NDK千疮百孔,开发的时候要异常小心。

另一个事情是,Android x86在EeePC 701的i915上是用Mesa软件执行OpenGL ES 2的(至少,我还没找到让它不fallback的方法),所以帧速率非常低。

至此,KlayGE for Android的第一阶段已经完成,即引擎核心已经完成移植。下个阶段会让更多的例子能在Android上执行。