注意本文仅适用于OSG 3.0 和3.0.1,其它版本未测试。
准备工作
编译OSG做为独立使用的库需要 Android NDK。进行开发需要Android SDK。
Android SDK: http://developer.android.com/sdk/index.html
Android NDK: http://developer.android.com/sdk/ndk/index.html
编译需要的NDK 是r5及其以后版本,不建议使用之前的版本或其它野版本。
最小配置
Native ABI需要 Level 8 或更新版本,需要Android 2.2及更新版本。
已知关键点
OSG在Android上只能编译静态库。
添加插件需要右侧的宏 macros: USE_OSGPLUGIN(),USE_DOTOSGWRAPPER_LIBRARY(),USE_SERIALIZER_WRAPPER_LIBRARY().使用OpenGL ES 1.X/2.0.
OpenGL中的特性与OpenGL ES中的差异: http://www.khronos.org/opengles/
ENVIRONMENTAL MAPPING 无法使用,但是可以使用 E.M. Shader。
OSG Pregenerated Shaders 在 GLES中无法工作需要添加自己的Shader。
多线程模式的Viewer无法使用。
如果第三方库中缺少FreeType,则osgSim 和osgShadow 无法使用,使用会崩。
The armeabi-v7a has Neon optimizations activated by default, this causes some troubles with devices compatible with armeabi-v7a without Neon optimizations
构建配置
使用CMake命令行来产生 Android Makefiles,下面介绍一些变量的设置。
设置Android build Variable为ON
-DOSG_BUILD_PLATFORM_ANDROID=ON
NDK路径
-DANDROID_NDK={Path to your NDK root directory}
设置静态编译,Android当前对OSG仅支持静态编译。
-DDYNAMIC_OPENTHREADS=OFF-DDYNAMIC_OPENSCENEGRAPH=OFF
OpenGL ES 配置
需要设置当前使用GLES1还是GLES2,两者不能同时使用,推荐使用GLES2:
GLES1
-DOSG_GL1_AVAILABLE = OFF-DOSG_GL2_AVAILABLE = OFF-DOSG_GL3_AVAILABLE = OFF-DOSG_GLES1_AVAILABLE = ON-DOSG_GLES2_AVAILABLE = OFF-DOSG_GL_LIBRARY_STATIC = OFF-DOSG_GL_DISPLAYLISTS_AVAILABLE = OFF-DOSG_GL_MATRICES_AVAILABLE = ON-DOSG_GL_VERTEX_FUNCS_AVAILABLE = ON-DOSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE = ON-DOSG_GL_FIXED_FUNCTION_AVAILABLE = ONGLES2
-DOSG_GL1_AVAILABLE = OFF-DOSG_GL2_AVAILABLE = OFF-DOSG_GL3_AVAILABLE = OFF-DOSG_GLES1_AVAILABLE = OFF-DOSG_GLES2_AVAILABLE = ON-DOSG_GL_LIBRARY_STATIC = OFF-DOSG_GL_DISPLAYLISTS_AVAILABLE = OFF-DOSG_GL_MATRICES_AVAILABLE = OFF-DOSG_GL_VERTEX_FUNCS_AVAILABLE = OFF-DOSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE = OFF-DOSG_GL_FIXED_FUNCTION_AVAILABLE = OFF其它
打开 -j 命令
-DJ=4
定义一个安装路径
-DCMAK
浏览次数:56757 次