日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android-ndk编译osgdb_3ds静态库

發(fā)布時間:2024/6/14 Android 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android-ndk编译osgdb_3ds静态库 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

Android版本的OSG不支持3ds插件(可以查看osg\src\osgPlugins\CmakeLists.txt文件,搜素’android’關(guān)鍵詞,可以搜索到’IF(NOT?ANDROID)??ADD_SUBDIRECTORY(3ds)?ENDIF(),可見,android下3ds被屏蔽了),也就是使用Android-ndk編譯OSG的時候,不能編譯osgdb_3ds.a插件,那么接下來展示一下手動編譯osgdb_3ds.a的過程,假設(shè)OSG其他庫已經(jīng)編譯完成,庫文件位于c:/cygwin/usr/local/include,頭文件位于c:/cygwin/usr/local/obj/local。

1、去android官網(wǎng)下載一個ADT?Bundle版本的Eclipse,解壓之后,有eclipsesdk兩個文件夾和一個SDK?Manager.exe,運行它,省去了插件(CDT、AndroidSDK等)配置過程,再下載一個android-NDK,打開eclipseWindow-Preferences,配置一下NDK路徑,如下圖,這樣環(huán)境就搭建好了。

?

2、新建一個android工程,以ndk自帶的例子HelloJni為模板(或者你新建一個空工程,自己添加相關(guān)文件)

?

?

3、去OSG源代碼那里將src\osgPlugins里面的3ds文件夾拷貝到workspace\HelloJni\jni文件夾下,在jni文件夾下新建一個Application.mk文件,文件列表如下(可以刪除hello-jni.c):

?

4、修改jni/Android.mk,修改后內(nèi)容如下:

Android.mk開始:

LOCAL_PATH?:=?$(call?my-dir)

include?$(CLEAR_VARS)

LOCAL_LDLIBS?:=??????-lGLESv1_CM?-ldl

LOCAL_MODULE?:=?????osgdb_3ds

LOCAL_SRC_FILES?:=???3ds/ReaderWriter3DS.cpp?3ds/WriterNodeVisitor.cpp?3ds/WriterCompareTriangle.cpp\

3ds/lib3ds/lib3ds_io.c\

3ds/lib3ds/lib3ds_atmosphere.c\

????3ds/lib3ds/lib3ds_background.c\

????3ds/lib3ds/lib3ds_camera.c\

????3ds/lib3ds/lib3ds_chunk.c\

????3ds/lib3ds/lib3ds_chunktable.c\

????3ds/lib3ds/lib3ds_file.c\

????3ds/lib3ds/lib3ds_light.c\

????3ds/lib3ds/lib3ds_material.c\

????3ds/lib3ds/lib3ds_math.c\

????3ds/lib3ds/lib3ds_matrix.c\

????3ds/lib3ds/lib3ds_mesh.c\

????3ds/lib3ds/lib3ds_node.c\

????3ds/lib3ds/lib3ds_quat.c\

????3ds/lib3ds/lib3ds_shadow.c\

????3ds/lib3ds/lib3ds_track.c\

????3ds/lib3ds/lib3ds_util.c\

????3ds/lib3ds/lib3ds_vector.c\

????3ds/lib3ds/lib3ds_viewport.c

LOCAL_C_INCLUDES?:=??c:/cygwin/usr/local/include?/3ds/lib3ds

include?$(BUILD_STATIC_LIBRARY)#靜態(tài)庫

Android.mk結(jié)束。

?

編譯過程中,lib3ds_io.c文件中會報錯誤,uint_8之類的,添加幾個括號就行了。

?

說明一下LOCAL_C_INCLUDES,c:/cygwin/usr/local/include是make?install命令將OSG源代碼中的頭文件和cmake生成的osg/ConfigOpenThreads/Config兩個文件(OSG源代碼經(jīng)過Cmake之后產(chǎn)生的,查看一下就知道,只有OpenThreadsosg兩個文件夾,每個文件夾下只有一個叫Config的文件,這兩個文件必不可少,因為好多OSG源碼中需要包含它們,例如osg/Export頭文件)安裝到c:/cygwin/usr/的。至于如何Cmake,去網(wǎng)上搜索下如何編譯Android版本的OSGOSG官網(wǎng)就有。

5、修改Application.mk文件內(nèi)容如下:

#ANDROID?APPLICATION?MAKEFILE

APP_BUILD_SCRIPT?:=?$(call?my-dir)/Android.mk

#APP_PROJECT_PATH?:=?$(call?my-dir)

APP_OPTIM?:=?release#發(fā)布版

#APP_OPTIM?:=?debug#調(diào)試版

APP_PLATFORM? :=?android-7#這個版本號應(yīng)該可以改

APP_STL? :=?gnustl_static#使用靜態(tài)庫

APP_CPPFLAGS? :=?-fexceptions?-frtti

APP_ABI? :=?armeabi?#armeabi-v7a

APP_MODULES?????:=?osgdb_3ds

6、使用$ANDROID_NDK/ndk-build命令編譯,ANDROID_NDK?環(huán)境變量指示ndk的路徑,用記事本打開C:\cygwin\home\yourname\.bash_profile文件,yourname是你的電腦名,在末尾加上ANDROID_NDK=/cygdrive/E/Android/android-ndk-r8?export?ANDROID_NDK,如圖

?

先進入hellojni工程目錄,然后運行$ANDROID_NDK/ndk-build

?

?

?

可以到hellojni/obj/local/armeabi下找到libosgdb_3ds.a文件。如果libosgdb_3ds.a已經(jīng)存在,可能ndk不會進行再編譯,刪除obj文件夾再執(zhí)行$ANDROID_NDK/ndk-build即可。

至此,android下的3ds插件就編譯好了,下面看看怎么使用它。

7、使用libosgdb_3ds.a

libosgdb_3ds.a放到C:\cygwin\usr\local\obj\local\armeabi路徑下。

使用OSG例子osgAndroidExampleGLES1模板,用Eclipse加載它。

A、編輯Android.mk文件

LOCAL_LDFLAGS中添加-losgdb_3ds

?

B、修改OsgMainApp.hpp

添加USE_OSGPLUGIN(3ds)//3ds,osg使用靜態(tài)庫需要宏定義USE_OSGPLUGIN

C、修改OsgMainApp.cpp

在void?OsgMainApp::initOsgWindow(int?x,int?y,int?width,int?height)函數(shù)中

_root?=?new?osg::Group();

語句之后添加

????osg::Node*?mdl3ds=osgDB::readNodeFile("sdcard/teapot.3DS");

_root->addChild(mdl3ds);

編譯運行即可。

?

轉(zhuǎn)載于:https://www.cnblogs.com/coolbear/archive/2013/05/23/3094349.html

總結(jié)

以上是生活随笔為你收集整理的Android-ndk编译osgdb_3ds静态库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。