標籤:gid 技術分享 line mat 目錄 c++ 版本 拷貝 碰撞
平台:Win7,VS2010
1. Bullet庫的組織
是Bullet_User_Manual中的:
從中可見,Bullet的LinearMath(線性數學模組),其上是BulletCollision(碰撞檢測模組),然後BulletDynamics(剛體類比模組)和BulletSoftBody(可變形體類比模組)建立在BulletCollision之上,另外還有可選的匯入匯出外掛程式和多線程模組。LinearMath、BulletCollision、BulletDynamics、BulletSoftBody是核心模組,其他則是可選的(當你需要外掛程式或使用多線程時使用)。我們這裡只編譯核心模組,其實LinearMath、BulletCollision、BulletDynamics、BulletSoftBody對應4個.lib檔案(庫檔案)。
鑒於Bullet的模組化組織,使用者可以分層次的使用Bullet:
- Collision detection,這時只需包含LinearMath、BulletCollision庫;
- Rigid body dynamics,需包含LinearMath、BulletCollision、BulletDynamics庫;
- Soft body dynamics,包含全部4個LinearMath、BulletCollision、BulletDynamics、BulletSoftBody庫。
對於我們而言,可能用到可變形體,所以要編譯全部4個模組。
2. Bullet安裝指導
這是高層指導:
- 下載bullet-2.82-r2704.zip,解壓(r後面的數字可能不同);
- 運行“../build/vs2010.bat”,產生VS2010工程;
- 用VS2010開啟“../vs2010/0BulletSolution.sln”;
- 對LinearMath、BulletCollision、BulletDynamics、BulletSoftBody,分別在Debug和Release配置下編譯(更多版本及解釋見這裡);
- 將“../lib”下的8個.lib檔案,以及“../src”下所有.h檔案,都拷貝出來即構成安裝包。
後面第4節會step by step講解這個過程,並配有。下一節將如何配置Bullet工程。
3. Bullet工程配置(使用Bullet庫)
要使用Bullet,需要:
- 添加包含目錄,將上一節拷貝的.h檔案所在目錄添加到工程的包含目錄(在所有配置下);
- 添加庫目錄,將上一節拷貝的.lib檔案所在目錄添加到工程庫目錄(在所有配置下);
- 引用庫,添加對.lib檔案的引用(根據使用層次添加所需.lib檔案,Debug和Release分別設定);
- 包含標頭檔,在代碼中包含“btBulletDynamicsCommon.h”。
註:
添加包含目錄的兩種方法:
- “項目屬性 >> 配置屬性 >> VC++目錄 >> 包含目錄”
- “項目屬性 >> 配置屬性 >> C/C++ >> 常規 >> 附加元件封裝含目錄”。
添加庫目錄的兩種方法:
- “項目屬性 >> 配置屬性 >> VC++目錄 >> 庫目錄”
- “項目屬性 >> 配置屬性 >> 連結器 >> 常規 >> 附加庫目錄”。
引用庫的兩種方法:
- 代碼#pragma comment (lib, "xxx.lib")(用#ifdef _DLL和#ifdef _DEBUG);
- “項目屬性 >> 配置屬性 >> 連結器 >> 輸入 >> 附加依賴項”。
.lib檔案版本問題參見我的另一篇文章:配置自己的OpenGL庫,glew、freeglut庫編譯,庫衝突解決。
4. Step by step
咱們從產生的.sln檔案開始吧:
開啟0BulletSolution.sln:
分別在Debug和Release配置下產生上面中的4個項目。更多版本見:配置自己的OpenGL庫,glew、freeglut庫編譯,庫衝突解決。注意,Bullet工程裡的Debug和Release都是使用靜態CRT(我們一般用的是DLL CRT),所以,有必要多編譯2個版本。編譯後得到.lib檔案,可以根據編譯版本自行改檔案名稱:
構建安裝包如下:
windows下Bullet 2.82編譯安裝(Bullet Physics開發環境配置)