2017年1月5日 星期四

OpenGL-Assimp資料庫連結

之前參考了learnOpenGL網站的範例,到了匯入model的階段的時候
教學建議使用Assimp來匯入model,這是Assimp官網對這個lib的解釋
Open Asset Import Library (short name: Assimp) is a portable Open Source library to import various well-known 3D model formats in a uniform manner.

用這個lib可以簡單地把obj檔轉換成uniform格式來使用,對於openGLSL是非常友善的。
只是當下使用的時候,我是直接下載assimp 3.1.1 binary版本,亦如往常地把32bit 的lib,include等檔案在VS的property設定完之後,出現了問題,所以在這裡紀錄一下如何解決。



首先,那些lib設定完之後,直接編譯,VS會跳出error說找不到assimp.exe
這是因為我們所link的assimp.lib會指定需要assimp.exe,所以我們需要這個exe,另外執行這個exe所以到32bit bin中把assimp.exe放入到VS專案資料夾中,只要跟main檔案在同一個資料夾中VS就會自己去找到他,另外執行這個exe檔案時我們還需要把assimp.dll這個windows動態函式庫一起放到同個資料夾中,這樣exe才能正確執行

但是放入之後出現了一個更嚴重的問題,VS跳出了"程式無法正確執行 0xc000007b" 這個執行錯誤最有可能的原因是我們使用了64bit的lib在32bit的檔案中執行,也就是所謂的位元格式不對,查了一下,這是assimp 3.1.1 binary版本本身的問題,他的32bit是無法正常運行的,64bit倒是沒這個問題,可是我們的其他GL library都要在32bit下執行才行。

所以網路的解決方法是,不要下載binary,而是去下載source code 用CMAKE自己編譯正確的檔案出來。
CMAKE連結在此

所以去下載最新版的assimp 3.3.1 source code解安裝,並且下載最新版本的CMAKE
assimp連結在此

執行CMAKE.exe,他是一個GUI,只要在source路徑選擇"整個"assimp 3.3.1 資料夾,

輸出路徑就隨便找個地方建個資料夾,接下來按下configure,這裡會要你選擇你所需要的編譯環境,

我的例子是,我需要在VS2015上建立32bit的release版本,所以我選擇Visual studio 14 2015,而不是選擇Visual studio 14 2015 win64 這個會建立64bit的版本,選好之後呢,如果你真的有安裝好Visual studio 14 2015,CMAKE會幫你找到所有需要的路徑跟檔案,正確會跳出configure done,否則就會跳出configure error,那你就要去檢查你選擇的編譯環境是不是正確的,電腦是否有安裝,或是source code的CMAKE.LIST中有沒有語法或支援環境的問題。

確認CMAKE跳出configure done,我們就可以按下generate,因為我選的是VS2015,接著就會在我們的輸出路徑資料夾中建立好一個也是唯一個project.sln,一個VS solution,他就是真正能編譯出lib檔的東西,打開project.sln→選擇32bit →選擇release版本→接下選擇建置→建置方案,他就會開始run,這個通常需要一段時間,run完之後呢,我們就可以去輸出資料夾中的code→release資料夾看到有三個檔案assimp-mt-140.lib,assimp-mt-140.exp,assimp-mt-140.dll

如果都沒有代表編譯錯誤,這裡就要檢查所選的assimp版本有沒有支援在VS2015中執行了。

看到三個檔案assimp-mt-140.lib,assimp-mt-140.exp,assimp-mt-140.dll不用緊張,第一個就是lib,我們可以就直接在VC++ lib屬性中改成連接到這裡,include資料夾依然連到assimp 3.3.1中的inlucde資料夾

assimp-mt-140.exp,assimp-mt-140.dll,就是exe執行檔以及dll檔案,exp只是exe的一種而已windows都會當作執行檔執行,所以把這兩個放到我們原本要使用assimp的project中的main.cpp同個目錄下就可以讓VS找到他們了

到這裡assimp就可以正確執行並使用了。

這裡紀錄一下最後的版本是使用哪一種 2017/1/6
OS:window10
assimp版本:3.3.1
CMAKE版本:3.7.1-win64
complier:visual studio 2015

沒有留言:

張貼留言