最近迷恋上了3d游戏,于是开始寻找android智能终端上的3d引擎,终于找到了一个性能和易用度都比较高的开源引擎catcake,经过一晚上的折腾,终于在andriod模拟器上跑起来了第一个helloworld程序。具体的步骤如下:
1、从catcake的google托管地址(http://code.google.com/p/catcake/)下载catcake-0.9.5-android.tar.gz文件,
下载后随便解压该文件到磁盘目录,这个目录称为${CATCAKE_HOME}
2、打开eclipse,导入${CATCAKE_HOME}\sample\project\android\hello-catcake工程。(没有安装好eclipse的 android环境和配置好ndk 的朋友,请百度或者google)
3、进入hello-catcake中的jni目录,在dos或者shell下输入ndk-build,开始编译libhello-catcake.so
4、本人的开发环境是windows,于是打开cygwin开始编译,但是报了一大堆错误,百度一下发现需要catcake的include目录中的.h和.c文件,于是${CATCAKE_HOME}\include和${CATCAKE_HOME}\lib文件夹拷贝到工程中的jni目录中
5、切换到cygwin,执行ndk-build,结果神奇般的通过了,cygwin打印如下:
Install : libhello_catcake.so => libs/armeabi/libhello_catcake.so
6、好了,在eclipse中运行该项目,我选择的目标模拟器的api版本为3.0,几分钟后发现项目在模拟中安装好了,但是点击运行该apk时,屏幕一闪而过,eclipse中logcat也没有任何的调试信息。百度,goole没有发现任何有价值的信息,于是怀疑是否模拟器版本问题。于是马上换了3个2.0的,2.2和2.3的版本的模拟器,结果还是一样。没辙了,切换到eclipse中的jni目录,打开main.cpp文件,发现以下代码:
ckMain() { ckCreateCatcake("Hello Catcake ", 320, 480, 30); /* The resource files need to be copied to the target by using 'adb push' command like this: adb push hello_catcake/data /data/data/catcake_application.hello_catcake/data And they must be specified by the absolute paths in ckResMgr::loadResource. */ ckResMgr::loadResource("/data/data/catcake_application.hello_catcake/data/catcake_logo_71x14.png", true); ckResMgr::loadResource("/data/data/catcake_application.hello_catcake/data/stonsans.ttf", true); newHelloCatcake(); /* ckStartCatcake doesn't block in Catcake for Android. So you must not write finalization process such as ckDestroyCatcake after it. */ ckStartCatcake();
注意其中的注释部分
/* The resource files need to be copied to the target by using 'adb push' command like this: adb push hello_catcake/data /data/data/catcake_application.hello_catcake/data And they must be specified by the absolute paths in ckResMgr::loadResource. */
恍然大悟,原来需要将工程下的data目录下的文件push到模拟器中/data/data/catcake_application.hello_catcake/data目录下,于是使用adb push命令将文件推送过去,然后在编译该项目,等待几十秒钟后,出现了如下界面:
下图中的catcake的方框会不停的转动,由于是png截图,因此看不到该效果,有心的读者可以下载附件中的源码,进行编译并运行就可以看到效果。
大功告成
接下来几章会详细介绍如何使用catcake-android在andriod下开发3D游戏。