成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

將AndroidBullet 物理引擎移植至英特爾 架構(gòu)

移動(dòng)開發(fā) Android
由于目前的移動(dòng)設(shè)備上能夠使用更高的計(jì)算性能,移動(dòng)游戲現(xiàn)在也可以提供震撼的畫面和真實(shí)物理(realistic physics)。 槍戰(zhàn)游戲中的手雷爆炸效果和賽車模擬器中的汽車漂移效果等便是由物理引擎所提供,其核心是物理模擬。 一般而言,物理模擬決定了游戲引擎的性能。 一款游戲成功與否通常取決于物理引擎計(jì)算物理模型的速度和準(zhǔn)確度。

簡(jiǎn)介

由于目前的移動(dòng)設(shè)備上能夠使用更高的計(jì)算性能,移動(dòng)游戲現(xiàn)在也可以提供震撼的畫面和真實(shí)物理(realistic physics)。 槍戰(zhàn)游戲中的手雷爆炸效果和賽車模擬器中的汽車漂移效果等便是由物理引擎所提供,其核心是物理模擬。 一般而言,物理模擬決定了游戲引擎的性能。 一款游戲成功與否通常取決于物理引擎計(jì)算物理模型的速度和準(zhǔn)確度。

本文將介紹如何構(gòu)建 Android 版 Bullet 物理引擎并將其移至到基于英特爾® 凌動(dòng) SoC 的平臺(tái)。

 

Bullet 物理

 

Bullet 物理庫(kù)是一個(gè)實(shí)時(shí)物理引擎,通常作為其他游戲引擎的組件用于許多電腦游戲、電影、3D 建模系統(tǒng)以及其他應(yīng)用中 [http://bulletphysics.org/]。 2011 年年中,發(fā)布了支持 Android OS 的版本(ARM NEON* 優(yōu)化)。

首先,我們?cè)?Samsung Galaxy* Tab 3 10.1 (采用基于 ARM 的處理器,每秒幀數(shù)為 30)上運(yùn)行 Bullet 物理應(yīng)用。 然后,我們將該 Bullet 物理應(yīng)用移植到 x86 架構(gòu), 并在該 Samsung Galaxy* Tab 3 10.1 (現(xiàn)在采用英特爾® x86 處理器,每秒幀數(shù)為 60)上運(yùn)行 Bullet 物理應(yīng)用。 我們使用英特爾® 圖形性能分析器對(duì)每種情況下的性能進(jìn)行了比較 [http://software.intel.com/en-us/vcsource/tools/intel-gpa]。

將應(yīng)用移植到 x86 架構(gòu)后,開發(fā)人員能夠獲得額外的幀時(shí)間,從而提高其游戲中的物理計(jì)算速度,因此他們擁有更多的時(shí)間處理更多游戲中的真實(shí)物理或動(dòng)作。 準(zhǔn)備工作

構(gòu)建并移植我們需要的 Bullet:

Android SDK [https://developer.android.com/sdk/index.html]

 

Android NDK [https://developer.android.com/tools/sdk/ndk/index.html]

 

Eclipse* ADT [https://developer.android.com/sdk/installing/bundle.html]

 

Bullet Physics [https://bullet.googlecode.com/files/bullet-2.80-rev2531.zip]

 

整個(gè)流程可以在 Windows*、Linux* 或 Mac OS* 上運(yùn)行;這三種系統(tǒng)在這一方面并無本質(zhì)差別。 我們?cè)?Lenovo K900 和 Samsung Galaxy* Tab 10.1 3 上運(yùn)行了測(cè)試。 兩臺(tái)設(shè)備均基于英特爾凌動(dòng)處理器 Z2460。

此處隨附了本文中介紹的能夠自動(dòng)執(zhí)行所有操作的腳本。

 

構(gòu)建

 

第一步是在 ARM 下構(gòu)建并運(yùn)行示例應(yīng)用 PfxApp_1_Simple。

 

然后,我們將會(huì)構(gòu)建 PfxLibrary 庫(kù) — 物理引擎的主要組件。 如要完成該操作,需要訪問庫(kù)項(xiàng)目目錄:

<BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects\project\Android\PfxLibrary\jni

<BulletPhysics> 是訪問 bullet-2.80-rev2531 文件夾的路徑。 在目錄中打開 Android.mk 文件,然后找到并更換聲明的變量,如下所示:

LOCAL_PATH := <BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects

然后,打開控制臺(tái)并導(dǎo)航至:

<BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects\project\Android\PfxLibrary

運(yùn)行命令:

ndk-build

成功! 我們?yōu)?armeabi-v7a 成功構(gòu)建了 PfxLibrary。

接下來,我們來構(gòu)建示例應(yīng)用。 導(dǎo)航至以下目錄:

<BulletPhysics>\bullet-2.80-ev2531\Extras\PhysicsEffects\project\Android\PfxApp_1_Simple\jni

打開 Android.mk 文件并更改聲明:

LOCAL_PATH := <BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects

在命令提示符下,在項(xiàng)目文件夾中更改目錄:

<BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects\project\Android\PfxApp_1_Simple

運(yùn)行命令:

ndk-build

我們使用 Eclipse IDE 啟動(dòng)應(yīng)用。 將該項(xiàng)目導(dǎo)入 Eclipse:

File => Import => Android => Existing Android Code Into Workspace => Browse… =>

 

<BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects\project\Android\PfxApp_1_Simple\ =>

 

OK => Finish

 

運(yùn)行相同的應(yīng)用。 在項(xiàng)目圖標(biāo)上點(diǎn)擊鼠標(biāo)右鍵,并選擇 "Run As => Android Application",如圖 2 所

示例將會(huì)在轉(zhuǎn)換模式下運(yùn)行。

 

移植

 

接下來,我們將把該示例 PfxApp_1_Simple 移植到 x86。 從核心 PfxLibrary 庫(kù)開始。 導(dǎo)航至項(xiàng)目文件夾:

<BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects\project\Android\PfxLibrary\jni

打開 Android.mk 文件并更改此聲明:

APP_ABI := x86

對(duì) Android.mk 文件做如下更改:

LOCAL_PATH := <BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects

 

LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%) -DUSE_PTHREADS –pthread

 

LOCAL_ARM_NEON := false

 

通過將以下內(nèi)容從 LOCAL_SRC_FILES 聲明列表中刪除來移除 ARM NEON* 優(yōu)化的匯編文件:

src/base_level/solver/pfx_constraint_row_solver_neon.cpp \

 

include/vecmath/neon/vectormath_neon_assembly_implementations.S

 

重新構(gòu)建物理引擎。 在命令提示符下,更改工作目錄:

<BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects\project\Android\PfxLibrary

運(yùn)行 ndk-build。 我們現(xiàn)在為 x86 架構(gòu)創(chuàng)建了 PfxLibrary。 重復(fù)上述操作,移植示例應(yīng)用。 導(dǎo)航至以下項(xiàng)目目錄:

<BulletPhysics>\bullet-2.80-ev2531\Extras\PhysicsEffects\project\Android\PfxApp_1_Simple\jni

打開 Application.mk 文件并更換聲明:

APP_ABI := x86

更換 Android.mk 文件中的變量:

LOCAL_PATH := \bullet-2.80-rev2531\Extras\PhysicsEffects

 

LOCAL_SRC_FILES := project/Android/PfxLibrary/obj/local/x86/libpfxlibrary.a

 

LOCAL_CFLAGS := $(LOCAL_C_INCLUDES:%=-I%)

 

LOCAL_ARM_NEON := false

 

從 LOCAL_SRC_FILES 中刪除以下內(nèi)容:

sample/test_ARM_NEON_performance/neon_dot_product.S \

 

sample/test_ARM_NEON_performance/neon_cross_product.S \

 

sample/test_ARM_NEON_performance/neon_matrix4_operator_multiply.S \

 

sample/test_ARM_NEON_performance/neon_matrix3_operator_multiply.S \

 

sample/test_ARM_NEON_performance/neon_orthoInverse_transform3.S \

 

sample/test_ARM_NEON_performance/neon_transform3_operator_multiply.S \

 

sample/test_ARM_NEON_performance/neon_transpose_matrix3.S \

 

sample/test_ARM_NEON_performance/test_neon_cross_product.cpp \

 

sample/test_ARM_NEON_performance/test_neon_dot_product.cpp \

 

sample/test_ARM_NEON_performance/test_neon_matrix3_operator_multiply.cpp \

 

sample/test_ARM_NEON_performance/test_neon_matrix4_operator_multiply.cpp \

 

sample/test_ARM_NEON_performance/test_neon_orthoInverse_transform3.cpp \

 

sample/test_ARM_NEON_performance/test_neon_transform3_operator_multiply.cpp \

 

sample/test_ARM_NEON_performance/test_neon_transpose_matrix3.cpp \

 

sample/test_ARM_NEON_performance/test_neon_solve_linear_constraint_row.cpp

 

為項(xiàng)目文件夾更改工作目錄:

<BulletPhysics>\bullet-2.80-rev2531\Extras\PhysicsEffects\project\Android\PfxApp_1_Simple

使用 ndk-build 命令構(gòu)建項(xiàng)目,然后在設(shè)備上運(yùn)行示例。

使用 Google Play 提供的 APK Info 應(yīng)用查看支持的架構(gòu) [https://play.google.com/store/apps/details?id=com.intelloware.apkinfo]

 

結(jié)論

本文分步介紹了如何構(gòu)建和移植物理引擎 — Bullet Physics。 將該應(yīng)用成功移植至 x86 架構(gòu)后,應(yīng)用的物理移植速度提高 2 倍,幀速率(FPS)得到提高。

本文鏈接:https://software.intel.com/zh-cn/android/articles/porting-the-android-bullet-physics-engine-to-intel-architecture?utm_campaign=eoe&utm_source=eoe.cn&utm_medium=Link&utm_content=intel-optimization

責(zé)任編輯:chenqingxiang 來源: software.intel
相關(guān)推薦

2012-05-08 09:49:44

英特爾關(guān)鍵業(yè)務(wù)至強(qiáng)E7

2011-08-05 09:09:59

英特爾云計(jì)算

2010-06-17 15:40:40

英特爾數(shù)據(jù)中心架構(gòu)

2009-03-30 13:43:47

多核服務(wù)器英特爾

2014-04-03 14:23:02

英特爾統(tǒng)一固件管理套件

2013-03-07 10:56:03

英特爾HadoopXeon

2012-02-03 10:21:21

惠普英特爾安騰

2023-11-20 13:06:52

2012-05-09 11:32:52

英特爾Tick-Tock

2009-03-18 18:26:32

英特爾Nehalem服務(wù)器

2011-12-14 19:01:20

英特爾

2009-06-08 16:35:30

RISC服務(wù)器遷移

2022-08-05 18:39:55

英特爾存儲(chǔ)傲騰

2014-01-16 09:45:37

英特爾云計(jì)算

2009-06-18 09:00:43

Intel迅馳芯片

2009-02-20 08:44:45

裁員英特爾愛爾蘭

2009-09-15 09:26:31

英特爾副總裁跳槽EMC

2013-02-26 10:18:46

英特爾安騰惠普

2013-02-28 10:32:07

hadoop英特爾apache
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩中文字幕久久 | 成人美女免费网站视频 | 在线四虎| 精品久久久久久久人人人人传媒 | 日本在线播放一区二区 | 中文字幕精品一区二区三区精品 | 中国一级毛片免费 | 国产在线中文字幕 | 国产乱码一区 | 久久91精品久久久久久9鸭 | 女女百合av大片一区二区三区九县 | 人干人人 | 亚洲精品久久久久久久久久久久久 | 日韩精品成人一区二区三区视频 | 国产高清视频在线观看 | 狠狠综合久久av一区二区小说 | 亚洲伦理自拍 | 欧美日韩高清在线一区 | 午夜网站视频 | 国产三级大片 | 欧美专区在线观看 | 日韩电影免费观看中文字幕 | 99久久精品免费看国产小宝寻花 | 国产在线拍偷自揄拍视频 | 国产欧美久久精品 | 国产精品免费福利 | 亚洲欧美日韩在线 | 欧美亚洲高清 | 久久久精品一区 | 欧美日韩在线免费观看 | 麻豆精品国产免费 | 精品久久久久久久 | 日韩精品一区二区三区在线播放 | 亚洲欧美日韩久久 | 91成人在线视频 | 亚洲女人天堂成人av在线 | 国产成人精品一区二区三区在线 | 91毛片在线看 | 国产一级久久久久 | 亚洲精品视频在线看 | 一级免费毛片 |