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

將AndroidBullet 物理引擎移植至英特爾 架構

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

簡介

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

本文將介紹如何構建 Android 版 Bullet 物理引擎并將其移至到基于英特爾® 凌動 SoC 的平臺。

 

Bullet 物理

 

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

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

將應用移植到 x86 架構后,開發人員能夠獲得額外的幀時間,從而提高其游戲中的物理計算速度,因此他們擁有更多的時間處理更多游戲中的真實物理或動作。 準備工作

構建并移植我們需要的 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]

 

整個流程可以在 Windows*、Linux* 或 Mac OS* 上運行;這三種系統在這一方面并無本質差別。 我們在 Lenovo K900 和 Samsung Galaxy* Tab 10.1 3 上運行了測試。 兩臺設備均基于英特爾凌動處理器 Z2460。

此處隨附了本文中介紹的能夠自動執行所有操作的腳本。

 

構建

 

第一步是在 ARM 下構建并運行示例應用 PfxApp_1_Simple。

 

然后,我們將會構建 PfxLibrary 庫 — 物理引擎的主要組件。 如要完成該操作,需要訪問庫項目目錄:

<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

然后,打開控制臺并導航至:

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

運行命令:

ndk-build

成功! 我們為 armeabi-v7a 成功構建了 PfxLibrary。

接下來,我們來構建示例應用。 導航至以下目錄:

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

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

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

在命令提示符下,在項目文件夾中更改目錄:

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

運行命令:

ndk-build

我們使用 Eclipse IDE 啟動應用。 將該項目導入 Eclipse:

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

 

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

 

OK => Finish

 

運行相同的應用。 在項目圖標上點擊鼠標右鍵,并選擇 "Run As => Android Application",如圖 2 所

示例將會在轉換模式下運行。

 

移植

 

接下來,我們將把該示例 PfxApp_1_Simple 移植到 x86。 從核心 PfxLibrary 庫開始。 導航至項目文件夾:

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

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

APP_ABI := x86

對 Android.mk 文件做如下更改:

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

 

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

 

LOCAL_ARM_NEON := false

 

通過將以下內容從 LOCAL_SRC_FILES 聲明列表中刪除來移除 ARM NEON* 優化的匯編文件:

src/base_level/solver/pfx_constraint_row_solver_neon.cpp \

 

include/vecmath/neon/vectormath_neon_assembly_implementations.S

 

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

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

運行 ndk-build。 我們現在為 x86 架構創建了 PfxLibrary。 重復上述操作,移植示例應用。 導航至以下項目目錄:

<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 中刪除以下內容:

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

 

為項目文件夾更改工作目錄:

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

使用 ndk-build 命令構建項目,然后在設備上運行示例。

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

 

結論

本文分步介紹了如何構建和移植物理引擎 — Bullet Physics。 將該應用成功移植至 x86 架構后,應用的物理移植速度提高 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

責任編輯:chenqingxiang 來源: software.intel
相關推薦

2012-05-08 09:49:44

英特爾關鍵業務至強E7

2011-08-05 09:09:59

英特爾云計算

2010-06-17 15:40:40

英特爾數據中心架構

2009-03-30 13:43:47

多核服務器英特爾

2014-04-03 14:23:02

英特爾統一固件管理套件

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服務器

2009-06-08 16:35:30

RISC服務器遷移

2011-12-14 19:01:20

英特爾

2014-01-16 09:45:37

英特爾云計算

2022-08-05 18:39:55

英特爾存儲傲騰

2009-06-18 09:00:43

Intel迅馳芯片

2009-02-20 08:44:45

裁員英特爾愛爾蘭

2009-09-15 09:26:31

英特爾副總裁跳槽EMC

2013-09-13 15:19:08

英特爾移動平臺IDF

2013-02-26 10:18:46

英特爾安騰惠普
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产一区二区三区久久 | 亚洲视频免费播放 | 亚洲欧美中文日韩在线v日本 | 特黄色一级毛片 | 久久久久久久网 | 国产欧美在线视频 | 日本黄色免费视频 | 久久精品一区二区三区四区 | 国产精品久久国产精品99 | 日韩在线播放第一页 | 久久久久国产一区二区三区不卡 | 精品久久久久久久久久久久 | 成人免费福利 | 欧美猛交| 久久精品中文字幕 | 亚洲国产精品一区二区第一页 | 亚洲成人一区二区 | 成人在线播放网站 | 国产精品亚洲一区二区三区在线观看 | a级黄色网 | 日韩成人在线播放 | 日韩欧美一区二区三区免费观看 | 精品免费国产一区二区三区 | 91精品一区二区三区久久久久久 | 日韩综合色| 成人在线视频一区 | 一区二区三区av | 成人一区av偷拍 | 成人欧美日韩一区二区三区 | 免费毛片在线 | 久久爆操 | 色就干| 中文字幕av在线播放 | 午夜视频一区二区三区 | av手机免费在线观看 | 久久精品久久综合 | 色在线免费 | av网址在线 | 精品欧美一区二区三区久久久 | 国产一级在线 | 久久性色 |