首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Android 平台移植 Irrlicht 3D 引擎完整實戰記錄 (一)

     編輯:關於C語言

環境準備

  • Eclipse Kepler + ADT 22.3.0 + CDT 8.2.1
  • android-ndk-r9c-windows-x86_64
  • Irrlicht Android 版源碼:官方倉庫

專案導入與配置

  1. 將源碼導入 Eclipse(Existing Android Code)。
  2. 專案結構包含 Java 活動、JNI 原生碼、資產檔案。
  3. AndroidManifest.xml 設 minSdkVersion=8(支援 OpenGL ES 1.x)。
  4. 右鍵專案 → Android Tools → Add Native Support,輸入 irrlicht 生成 jni/ 與 Android.mk。

專案結構 原生支援

NDK r9 相容性修正

錯誤 1:__android_log_print 格式字串缺失。

// 修改前
__android_log_print(ANDROID_LOG_INFO, "log", message);
// 修改後
__android_log_print(ANDROID_LOG_INFO, "log", "%s", message);

錯誤 2:multiple definition of 'GL_BGRA',因同時啟用 GLES1 與 GLES2。

修改 include/irrCompileConfig.h,註釋 #define _IRR_COMPILE_WITH_OGLES2_,保留 GLES1。

執行時期問題排除

閃退 1:No OpenGL-ES2 support compiled in

jni/android-activity.cpp 中 createDevice 使用 EDT_OGLES2,改為 EDT_OGLES1。

閃退 2:cannot getMesh (sydney.md2)

程式嘗試從 /sdcard/Irrlicht/sydney.md2 載入模型。解決:

  • 手動在 SD 卡建立 Irrlicht 目錄並複製 IrrlichtSDCard 資源。
  • 或修改 Utils.java 中 unpackOnSdCard(),將 assets/data/ 自動解包至 SD 卡(建議方式)。

勞拉模型渲染成功

USB 調試注意

連接手機時設 USB 模式為「僅充電」,避免 Environment.getExternalStorageState() 返回 shared 導致解包失敗。

本文出自「若羽☆初見」博客:原文連結

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved