2016年9月23日 星期五

3D遊戲程式設計(1):OGRE安裝

這學期選修了3D遊戲設計,基本上是衝著英文上課才去的,雖然有些人會認為非外國教授的英文口授其實不會讓聽力變好,但是說實在的能夠英聽的機會在日常生活中也不多,如果能用一個課堂的時間,保持專注,還能多聽些英文,我想或多或少是有幫助的。

這堂課用了一個比較古老的遊戲引擎'OGRE,為什麼說他古老呢?
因為他目前的library支援到最新的部分是VS2012,而這堂課的code建議我們使用VS2010
而現在是2016年,microsoft的visual studio目前已經全面改成2015了,更舊版本的下載方式都被微軟移除了,如果要使用2010以前的VS只能去購買premium、profession或ultimate這些付費的版本了,所幸交大授權軟體能夠讓在學學生免費下載,不過按照微軟更新的樣子來看,OGRE再不快點跟上的話,我可能以後都不會用VS來撰寫OGRE的遊戲了。


而OGRE在安裝的時候步驟很複雜,更讓我覺得麻煩的是遇到的問題更多,所以趕緊再安裝成功之後馬上把遇到的問題記錄下來

OS:win10
使用SDK:OgreSDK_vc10_v1-9-0
visual studio版本:2010
測試程式碼:OgreWikiTutorialFramework_1-9(官網下載)

首先OGRE本身基本上包含了lib函式庫,所以一開始不免俗地就要向OPENCV,OPENGL一樣,在windows這個麻煩的環境底下進行一連串的設定,第一步當然就是設定環境變數OGRE_HOME去指定到下載下來的lib資料夾位置,然後在去vs2010的C++專案中設定一堆property的連結,這些我們之前都常做,所以也不陌生,OGRE官網更有一步一步完整帶著你從頭到尾的教學,非常仔細,跟著做應該不會有問題,只是當我設定完按下執行時卻出現錯誤,VS告訴我說執行黨.exe未生成,看了一下編譯訊息,原來是少了OGRE_OVERLAY.h這個檔案。

詭異的是,官網對於OGRE_OVERLAY是只有在設定C++/Addition IncludeLibrary中提到要在Debug和Release兩個configuration要記得加入OGRE_OVERLAY的lib,但是是在OGRE版本「大於」1-9才要,奇怪,目前2016/9,OGRE推出的最新SDK是1-9-0,他怎麼預告之後的版本呢?於是我加上了OGRE_OVERLAY,果然才編譯成功,看來不是「大於」而是大於等於1-9才會啊!

但是compile一半又出現了錯誤,這次是出現exception 7 : can't load dynamic library RenderSystem_Direct3D11_d,直覺想到會不會是DLL黨不見了,於是去OGRE裏頭看,奇怪都有阿,而且property中設定都有連到這個位置,怎麼還找不到,仔細一看,Direct3D11,存在,於是上網查了一下發現這個Direct3D11本身根本是壞的,根本不能用,於是必須要去D:\OgreSDK_vc10_v1-9-0\bin\Release和D:\OgreSDK_vc10_v1-9-0\bin\Debug中把plugins.cfg和plugins_d.cfg打開,找到Plugin=RenderSystem_Direct3D11用#註解掉

於是乎編譯完成而且可以執行了,還可以選擇render的程式,Direct3D9可以run但是OPEN_GL會直接出現錯誤,看了一下官網要再去跟plugins.cfg同個位置下的resources.cfg中加入一行Plugin=RenderSystem_GL,而release要改,debug當然也要改,真是折騰人,使用OPEN_GL render後原本1980*1440的解析度會變成1080*960,看來是OPENGL的本身的問題,所以沒意外的話還是用DIRECT3D9這個render吧!

沒有留言:

張貼留言