已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
開源 3D 游戲引擎 Irrlicht 鬼火 用法入門 趙剛 Irrlicht 中文名 鬼火 是著名的 3D 開源引擎之一 該 3D 引擎結(jié)構(gòu)清 晰 執(zhí)行效率高 上手容易 無論是初學(xué)者學(xué)習(xí) 3D 游戲引擎 還是用來開發(fā)規(guī) 模較小的 3D 應(yīng)用都是很不錯(cuò)的選擇 本文以 Irrlicht 1 7 2 版 目前的最新版 為例 講解其在 Windows 系 統(tǒng)中的用法 首先需要在 下載 Irrlicht 的 SDK 1 7 2 版的 SDK 尺寸為 24 6MB 非常輕巧 幾分鐘內(nèi)即可下 載到本地 SDK 下載到本地后是一個(gè)名為 irrlicht 1 7 2 zip 文件 將該文件解壓 可以右鍵點(diǎn)擊 zip 在彈出菜單中選擇 解壓到當(dāng)前文件夾 如果裝了 WinRAR 軟件的話 得到一個(gè)名為 irrlicht 1 7 2 的目錄 進(jìn)入該目錄得到以 下結(jié)構(gòu) 在 bin 中 Win32 VisualStudio 目錄已經(jīng)包含了編譯好的 dll 當(dāng)然如果需 要對(duì)引擎做些修改的話就需要重新編譯 SDK 生成 dll 編譯 SDK 非常容易 進(jìn) 入 source 目錄下的 Irrlicht 目錄 可以找到 Visual Studio 的解決方案文件 7 1 版 8 0 版 9 0 版的都有 以使用 Visual Studio 2008 為例 可以雙擊 Irrlicht9 0 sln 文件打開解決方案 解決方案在 Visual Studio 2008 中的表現(xiàn)如下圖 可以試一下不修改任何代碼直接生成解決方案 編譯過程應(yīng)該會(huì)順利通過 會(huì)有一大堆 warning C4819 可以不用理睬她們 完成后會(huì)在 bin 中的 Win32 VisualStudio 目錄下找到一個(gè)新的 irrlicht dll 如果編譯過程中出現(xiàn)了 fatal error C1083 無法打開包括文件 d3dx9shader h 這樣的錯(cuò)誤那說明你沒有安裝 DirectX SDK 如果一定要用 DirectX 作為底層渲染 API 那可以到 下載一個(gè)安裝上 DirectX SDK 尺寸很大 500MB 如果不是特別喜愛微軟產(chǎn)品的話 可以不用 DirectX SDK 直 接用 OpenGL 但是編譯前要告訴 irrlicht 嗨 我不用 DirectX 呢 忽略它好 不好 否則 irrlicht 會(huì)執(zhí)著的報(bào)錯(cuò) 讓你編譯不成功 怎么告訴 irrlicht 呢 很簡(jiǎn)單 打開 include 目錄下的 IrrCompileConfig h 文件 找到 define IRR COMPILE WITH DIRECT3D 9 這一句 直接注釋掉就可以了 再編譯就能成功了 如果不成功 那非常不幸 我也不知道為什么 反正 我編譯過好幾個(gè)版本 都能很順利的編譯出來 查查 Visual Studio 的問題吧 其實(shí)編譯成功了也沒什么值得喜悅的 因?yàn)楸緛砭褪菚?huì)編譯成功的 如果 你修改了引擎中的很多代碼還能編譯成功的話 那才值得喜悅一下 如果想先看看 irrlicht 引擎的效果可以進(jìn)入 bin 目錄下的 Win32 VisualStudio 目錄里面有很多 exe 文件 其中第一個(gè)是 01 HelloWorld exe 雙擊運(yùn)行 可以立刻看到下面的畫面 看起來是一個(gè)挺丑陋的畫面 不過不用擔(dān)心 這個(gè)畫面不代表 irrlicht 的 實(shí)力 只表示 irrlicht 在你的電腦上運(yùn)行正常 要畫面漂亮 提供漂亮的模型 和紋理圖片就好了 還有很多其他 demo 都可以試一下 比如 02 Quake3Map exe 出來下面的畫面 比 HelloWorld 畫面美不少 運(yùn)行 02 Quake3Map exe 的時(shí)候會(huì)先出來一個(gè)控制臺(tái)窗口 選 a 就好了 表示使用 OpenGL 作為底層渲染 API 運(yùn)行時(shí)鼠標(biāo)會(huì)隱藏起來 這樣你無法通過點(diǎn)擊窗口上的 X 關(guān)閉窗口 要 關(guān)閉運(yùn)行窗口退出程序可以按下 ALT F4 這一招很靈 一定想看看怎樣用 irrlicht 寫一個(gè)最簡(jiǎn)單的程序 HelloWorld 了 正好 irrlicht 自己帶著一個(gè)作為入門例子的 HelloWorld 我們打開它看個(gè)究竟 進(jìn) examples 目錄看到 01 HelloWorld 目錄 進(jìn)去后雙擊 HelloWorld vc9 vcproj 即可打開 HelloWorld 工程 HelloWorld 工程里只 有一個(gè) main cpp 文件 文件內(nèi)容如下 去除了英文注釋 include using namespace irr using namespace core using namespace scene using namespace video using namespace io using namespace gui ifdef IRR WINDOWS pragma comment lib Irrlicht lib pragma comment linker subsystem windows ENTRY mainCRTStartup endif int main IrrlichtDevice device createDevice video EDT SOFTWARE dimension2d 640 480 16 false false false 0 if device return 1 device setWindowCaption L Hello World Irrlicht Engine Demo IVideoDriver driver device getVideoDriver ISceneManager smgr device getSceneManager IGUIEnvironment guienv device getGUIEnvironment guienv addStaticText L Hello World This is the Irrlicht Software renderer rect 10 10 260 22 true IAnimatedMesh mesh smgr getMesh media sydney md2 if mesh device drop return 1 IAnimatedMeshSceneNode node smgr addAnimatedMeshSceneNode mesh if node node setMaterialFlag EMF LIGHTING false node setMD2Animation scene EMAT STAND node setMaterialTexture 0 driver getTexture media sydney bmp smgr addCameraSceneNode 0 vector3df 0 30 40 vector3df 0 5 0 while device run driver beginScene true true SColor 255 100 101 140 smgr drawAll guienv drawAll driver endScene device drop return 0 main 之前都是些文件包含 使用的名字空間等生命 其中 pragma comment linker subsystem windows ENTRY mainCRTStartup 這 句話告訴編譯器 程序運(yùn)行的時(shí)候不要彈出控制臺(tái)窗口 可以注釋掉 如果注 釋掉就會(huì)彈出黑色的控制臺(tái)窗口 進(jìn)入 main 后 第一件要做的事情是創(chuàng)建設(shè)備 IrrlichtDevice device createDevice video EDT SOFTWARE dimension2d 640 480 16 false false false 0 一個(gè) irrlicht 設(shè)備表現(xiàn)為一個(gè)窗口 如果創(chuàng)建設(shè)備失敗 那程序接下來就沒什 么事可以做了 只能報(bào)告一個(gè)錯(cuò)誤 并退出 if device return 1 如果設(shè)備創(chuàng)建成功 就會(huì)獲得一個(gè)窗口 窗口的大小為 640 480 video EDT SOFTWARE 參數(shù)告訴 irrlicht 創(chuàng)建一個(gè)使用軟件渲染器 的窗口 如果希望用 OpenGL 作為底層渲染 API 可以將 video EDT SOFTWARE 修改成 video EDT OPENGL 接下來這句 device setWindowCaption L Hello World Irrlicht Engine Demo 設(shè)置 了窗口的名稱 你可以將它修改成你想要的名稱 IVideoDriver driver device getVideoDriver ISceneManager smgr device getSceneManager IGUIEnvironment guienv device getGUIEnvironment 這三句將設(shè)備里建立好的視頻驅(qū)動(dòng)對(duì)象 場(chǎng)景管理對(duì)象和圖像用戶接口對(duì)象保 存在零時(shí)變量里 以備后用 guienv addStaticText L Hello World This is the Irrlicht Software renderer rect 10 10 260 22 true 表示在屏幕的 10 10 位置出顯示一行文字 IAnimatedMesh mesh smgr getMesh media sydney md2 表示讀入一個(gè) 3D 模型文件 建立一個(gè)帶骨骼動(dòng)畫的網(wǎng)格對(duì)象 如果建立失敗 比如磁盤中根本沒有所謂的 sydney md2 文件 那就會(huì)失敗 不 過只要用戶沒有刪除 SDK 里的文件 則這個(gè)文件是存在的 建立會(huì)成功 那 程序接下來也沒什么要展示的啦 退出完事 if mesh device drop return 1 這里執(zhí)行了 device drop 表示退出之前要將設(shè)備對(duì)象釋放掉 其實(shí)就是不 釋放程序退出后設(shè)備對(duì)象也會(huì)被釋放掉 但作為 C 程序員 及時(shí)釋放沒有用 的對(duì)象是好習(xí)慣 接下來這句 IAnimatedMeshSceneNode node smgr addAnimatedMeshSceneNode mesh 要理解一下 為什么要執(zhí)行這么一句 原來 irrlicht 里所有的在場(chǎng)景里看得見 的對(duì)象都以 SceneNode 場(chǎng)景節(jié)點(diǎn) 的方式出現(xiàn)的 剛才從磁盤中建立的網(wǎng)格 對(duì)象只是在內(nèi)存中的一個(gè)孤立數(shù)據(jù) 要讓 irrlicht 將她顯示出來 比如將她以 場(chǎng)景節(jié)點(diǎn)的方式加到場(chǎng)景樹里去 場(chǎng)景節(jié)點(diǎn)建立出來后還可以對(duì)她設(shè)置一些參數(shù) if node node setMaterialFlag EMF LIGHTING false node setMD2Animation scene EMAT STAND node setMaterialTexture 0 driver getTexture media sydney bmp 這幾句將節(jié)點(diǎn)的的材質(zhì)屬性設(shè)成關(guān)閉燈光 動(dòng)作為站立 用 sydney bmp 作為紋 理 smgr addCameraSceneNode 0 vector3df 0 30 40 vector3df 0 5 0 這句告訴 irrlicht 場(chǎng)景中的攝像機(jī)位于世界坐標(biāo) 0 30 40 這個(gè)位置 鏡 頭的朝向是 0 5 0 現(xiàn)在渲染的窗口有了 渲染的對(duì)象 3D 模型 也準(zhǔn)備好了 攝像機(jī)也對(duì)準(zhǔn)了 那接下去就該進(jìn)入沒完沒了的渲染循環(huán)了 while device run driver beginScene true t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 邁瑞除顫儀培訓(xùn)
- 輸液安全相關(guān)知識(shí)
- 軟裝物料培訓(xùn)課件
- 軟筆書法提升班培訓(xùn)課件
- 軟件課程知識(shí)
- 跨境電商維護(hù)專員培訓(xùn)
- 身高知識(shí)教學(xué)課件
- 畢業(yè)班教師培訓(xùn)會(huì)
- 貴陽培訓(xùn)班教學(xué)課件
- 貴州房產(chǎn)中介培訓(xùn)課程
- 2026年安徽馬鞍山市高三高考一模數(shù)學(xué)試卷試題(含答案詳解)
- (2025年)一級(jí)人力資源管理師考試真題及答案
- 生產(chǎn)車間首檢巡檢制度
- 攝食訓(xùn)練技術(shù)
- 2026年中考物理全真模擬試卷及答案(共五套)
- 備戰(zhàn)高考:高三班級(jí)管理與激勵(lì)策略
- 2025年生物多樣性保護(hù)與生態(tài)修復(fù)項(xiàng)目可行性研究報(bào)告
- 臨床檢驗(yàn)科主任:檢驗(yàn)技術(shù)在臨床應(yīng)用與質(zhì)量控制
- 等離子切割技術(shù)應(yīng)用要點(diǎn)
- 老年人抑郁癥宣教
- 2025年無人船行業(yè)分析報(bào)告及未來發(fā)展趨勢(shì)預(yù)測(cè)
評(píng)論
0/150
提交評(píng)論