freeglut 3.0 introduces support for the Android platform.
This platform is different than traditional desktop platforms, requiring cross-compilation, interfacing with a touchscreen, and ability for your application to be paused and resumed at any time.
Here's how:
Note: a pre-built archive can be found here: freeglut3-android-modules.tar.gz (2014-06-01 / SVN revision 1686).
/usr/src/android-ndk-r9d/build/tools/make-standalone-toolchain.sh \ --platform=android-9 \ --install-dir=/usr/src/ndk-standalone-9
PATH=/usr/src/ndk-standalone-9/bin:$PATH cd /usr/src/freeglut-3.0/ mkdir cross-android-gles/ cd cross-android-gles/ cmake \ -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \ -D CMAKE_INSTALL_PREFIX=/usr/src/ndk-standalone-9/sysroot/usr \ -D CMAKE_BUILD_TYPE=Debug \ -D FREEGLUT_GLES=ON \ -D FREEGLUT_BUILD_DEMOS=NO \ .. make -j4 make install # Only static for now: rm -f /usr/src/ndk-standalone-9/sysroot/usr/lib/libfreeglut-gles.so*
For instance if you use the autotools:
PATH=/usr/src/ndk-standalone-9/bin:$PATH export PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/sysroot/usr/share/pkgconfig ./configure --host=arm-linux-androideabi --prefix=/somewhere make make install
If you use CMake, you may want to copy our Android toolchain 'android_toolchain.cmake':
PATH="$PATH:/usr/src/android-ndk-r9d" PATH="$PATH:/usr/src/android-sdk-linux/tools" PATH="$PATH:/usr/src/android-sdk-linux/platform-tools" export PKG_CONFIG_PATH=/usr/src/ndk-standalone-9/sysroot/usr/share/pkgconfig cp .../freeglut-3.0/android_toolchain.cmake . mkdir cross-android/ cd cross-android/ cmake \ -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \ -D CMAKE_INSTALL_PREFIX=/somewhere \ -D CMAKE_BUILD_TYPE=Debug \ -D MY_PROG_OPTION=something ... \ .. make -j4 make install
Check progs/test-shapes-gles1/
in the freeglut
source distribution for a complete, stand-alone example.
mkdir freeglut-gles/ cp .../freeglut-3.0/android/Android.mk freeglut-gles/ ln -s /usr/src/ndk-standalone-9/sysroot/usr/include freeglut-gles/include ln -s /usr/src/ndk-standalone-9/sysroot/usr/lib freeglut-gles/lib
LOCAL_STATIC_LIBRARIES := ... freeglut-gles ... $(call import-module,freeglut-gles)
ndk-build NDK_MODULE_PATH=.
onDestroy
'd: the process is still running and
ready to accept onCreate
event to become active
again.exit()
s when the last window is
closed (without returning to your main
). But this
behavior can be changed
with glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, ...)
,
in which case your have to either exit()
yourself at
the end of your main
, or make sure
your main
can be called multiple times (in
particular: beware of static
variables that won't be
reinitialized).
android.check_pause
and
android.wait_for_resume
)