查看: 3432|回复: 0

OSG for Android在ubuntu下编译

[复制链接]

该用户从未签到

发表于 2013-7-20 09:43:39 | 显示全部楼层 |阅读模式
GISERPeng 整理于2013年7月16日
准备工作:
1. OSG:从osg官网上下载3.1.4\3.0.1,可以编译通过,其他版本尚未测试。
2. OSG第三方库,不要下错了,必须使android版的:http://www2.ai2.upv.es/difusion/osgAndroid/3rdpartyAndroid.zip, 并将其解压到OSG的源代码目录下
3. 下载android-ndk:http://dl.google.com/android/ndk/android-ndk-r8-linux-x86.tar.bz2, 我下载的使r8版本的至于其他的版本有没有编译出问题就不知道了。
4. 下载android-sdk:http://developer.android.com/sdk/index.html
sudo gedit /etc/bash.bashrc
5. 配置环境变量
加入下面的内容:
export ANDROID_NDK=ndk存放目录路径
export ANDROID_SDK=sdk存放路径
export PATH=$PATHANDROID_NDK
然后执行source /etc/bash.bashrc或者重启计算机
6. 安装cmake
sudo apt-get install cmake
开始编译:
1.        在终端中,进入OSG源代码目录:
cd /home/peng/OSG/OpenSceneGraph-3.0.1/
mkdir build
cd build
2.        执行cmake
我使用的命令为:
cmake -D OSG_GL1_AVAILABLE=OFF -D OSG_GL2_AVAILABLE=OFF -D OSG_GL3_AVAILABLE=OFF -D OSG_GLES1_AVAILABLE=OFF -D OSG_GLES2_AVAILABLE=ON -D OSG_GL_DISPLAYLISTS_AVAILABLE=OFF -D OSG_GL_MATRICES_AVAILABLE=OFF -D OSG_GL_VERTEX_FUNCS_AVAILABLE=OFF -D OSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE=OFF -D OSG_GL_FIXED_FUNCTION_AVAILABLE=OFF -D OSG_CPP_EXCEPTIONS_AVAILABLE=OFF -D OSG_BUILD_PLATFORM_ANDROID=ON -D ANDROID_NDK=/home/peng/android-ndk-r8 -D CMAKE_INSTALL_PREFIX=/home/peng/OSG/OpenSceneGraph-3.0.1/bin -D DYNAMIC_OPENTHREADS=OFF -D DYNAMIC_OPENSCENEGRAPH=OFF ..
以上文件地址根据自己目录进行设置,目前只测试OpenGL ES2.0版本,其中不同版本参数不同,参照下面说明。
OPENGL ES 的配置
OpenGL ES有1.x 和 2.0两个版本,下面为编译的配置参数,对以上命令进行修改即可。
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=ON
GLES2
-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
3.        执行make
make
耐性等待......
编译完成后,执行:
make install
到此编译就完成了。希望你运气好没有出错!!!
如果编译出错,请参照某大神的几条编译指导:
http://forum.openscenegraph.org/viewtopic.php?t=8774
First:
there is a good page in the wiki page with Cmake chain and requirements... and other stuff wich I recomend as a reading before doing anything.
Second:
NO! it's not needed we do it already -> DYNAMIC_OPENTHREADS     OFF
NO! it's not needed we do it already -> DYNAMIC_OPENSCENEGRAPH    OFF
Third:
From what i've seen so far some extrange bugs appear when...  
-You run cmake config twice over the same directory
-You use some graphic Cmake frontend version (but i've seen it work also)
-You use some Cmake outdated (this shoul be prevented by a fix that was approved a month ago)
-Ndk produce some extrange bugs with some distros
Fourth:
What it's important is:  
-What version of Ndk are you using? Remember that we recomend r5/b/c (Crystax it's not recommended)
-Thrunk or 3.0 Rc ?
So... what i recomend you to do:
-Clean your directory
-Use the Cmake console command
下面使运行一个实例(来自网络):
运行osgAndroidExampleGLES1:
将该实例代码导入的adt中,要 让eclipse自动编译你的工程,还需要做进一步的设置,在工程名点击右键,选择”properties“,在弹出的窗口当中选 择”Builders“,然后在窗口右侧选择”new”,再在弹出的窗口当中选择“program”,然后为你的builder命名,如下图所示。

随后进入builder的编辑窗口。在Main选项卡当中分别设置“Location”和“Working Directory”为“/bin/bash”和“/bin”,同时,根据你当前工程的位置设置“Argument”的值,如你的工程路径是“/home /yuanxz/workspace/hello-jni”,那么你就该设置其值为:--login -c "cd /home/yuanxz/workspace/hello-jni &&ndk-build"。如下图所示。

随后再设置“refresh”和”Build Option“选项卡,如下图所示。


其中点选refresh选项卡中的“specific resource”后面的“specify resource”按钮,在弹出的窗口中点选当前的工程,如下图所示。

用同样的方法设置”Build Option“选项卡中的”specify resource“按钮。设置完成后,即可使eclipse自动编译你的c程序,同时将其生成”.so”文件,供android工程生成能在android平台上运行的apk使用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表