锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 璋紵浜?nbsp; feiyurainy@163.com 杞澆璇鋒敞鏄庡嚭澶?/p>
寰堟棭浠ュ墠灝辨兂鍐欎竴浜涘叧浜?span>OGRE鐨勬枃绔犱簡錛屼竴鐩存病鏈轟細銆?/span> 鐞嗚В涓涓覆鏌撳紩鎿庯紝鎴戣寰楁渶閲嶈鐨勬槸鍏堟姄浣忎簡瀹冪殑涓繪灦鏋勶紝瀹冪殑涓葷嚎錛屾覆鏌撴祦紼嬶紝涓嶇劧鐨勮瘽錛屼竴涓紩鎿庡嚑涓囪錛岀敋鑷沖嚑鍗佷竾琛岀殑浠g爜錛屽厜鏄墦寮solution灝辮兘鍚撲綘涓璺充簡錛?/span>OGRE涔熸湁鍗佸嚑涓囪鐨勪唬鐮侀噺錛屾垜涓寮濮嬬湅瀹冪殑鏃跺欎篃鏄棤浠庝笅鎵嬶紝鎰熻浠g爜澶浜嗭紝涓嶇煡閬撲粠鍝紑濮嬬湅濂斤紝榪欎釜class鐪嬬湅錛岄偅涓?/span>class鐪嬬湅錛岀敱浜庡鏁翠釜寮曟搸娌℃湁涓涓竻鏅扮殑璁よ瘑錛岀湅榪囦簡涔熷嵃璞′笉娣憋紝鎵浠ワ紝鏈鍚庯紝榪樻槸鍐沖畾鍏堟壘鍑哄畠鐨勪富綰匡紝浜嗚В瀹冪殑娓叉煋嫻佺▼錛岃繖鏍鋒墠鑳芥湁鏈哄湴鎶婂悇涓儴鍒嗚仈緋昏搗鏉ャ?/span> 榪欑瘒鐭枃涔熸槸瀵?/span>OGRE鐨勪富瑕佹覆鏌撴祦紼嬬殑涓涓粙緇嶏紝鍙兘瀵逛竴浜?/span>class涓嶄細澶鍦板幓浠嬬粛鍏蜂綋鐨勫疄鐜扮粏鑺傘傛垜鎵鐢ㄧ殑浠g爜閮芥槸鍙栬嚜浜?/span>OGRE鐨勬渶鏂扮殑CVS鐗堟湰銆?/span> 璇昏呮渶濂藉OGRE鏈変竴瀹氱殑浜嗚В錛岃嚦灝戝緱鐪嬫噦瀹冪殑example錛屼笉鐒跺彲鑳戒竴浜涗笢瑗跨悊瑙h搗鏉ユ瘮杈冨洶闅俱傚D3D錛?/span>OPENGL鏈変竴瀹氫簡瑙f洿濂姐?/span> 濡傛灉浣犵湅榪?/span>D3D SDK涓甫鐨勪緥瀛愶紝浣犱竴瀹氱煡閬撲竴涓瘮杈冪畝鍗曠殑3D紼嬪簭瑕佽繍琛岃搗鏉ワ紝鑷沖皯閮戒細娑夊強浠ヤ笅鐨勫嚑閮ㄥ垎錛?/span> 棣栧厛鏄暟鎹殑鏉ユ簮錛屽寘鎷《鐐規暟鎹紝綰圭悊鏁版嵁絳夛紝榪欎簺鏁版嵁鍙互浠庢枃浠朵腑璇誨彇錛屼篃鍙互鍦ㄧ▼搴忚繍琛屾椂鐢熸垚銆?/span> 鎺ヤ笅鏉ワ紝鎴戜滑浼氬緩绔嬮《鐐圭紦鍐插尯鎶婇《鐐逛繚瀛樿搗鏉ワ紝寤虹珛texture瀵硅薄鏉ヨ〃紺?/span>texture錛屽欏剁偣緇勬垚鐨勭墿浣撹緗畠鍦ㄤ笘鐣屽潗鏍囩郴涓嬬殑鍧愭爣錛岃緗憚鍍忔満鐨勪綅緗紝瑙嗙偣錛岃緗?/span>viewport鐨勪綅緗拰澶у皬錛岀劧鍚庡氨鍙互鍦ㄦ覆鏌撳驚鐜腑寮濮嬭皟鐢ㄦ覆鏌撴搷浣滀簡錛岀粡榪囦簡front buffer鍜?/span>back buffer鐨勪氦鎹紝鎴戜滑灝辮兘鍦ㄥ睆騫曚笂鐪嬪埌3D鍥懼艦浜嗭紝浼唬鐮佸涓嬶細 setupVertexBuffer setWorldTransform setCamera setProjectionTransform setViewport beginFrame setTexture drawObject endFrame 浠ヤ笅灝辨槸娓叉煋涓涓墿浣撶殑涓昏姝ラ錛屽湪鎴戠湅鏉ワ紝榪欏氨鏄?/span>3D紼嬪簭鐨勪富綰匡紝鍚屾牱閬撶悊錛屾棤璁轟綘澶氬鏉傜殑娓叉煋寮曟搸錛岄兘寰楀疄鐜頒笂榪扮殑榪欎簺姝ラ錛屽叾浠栫殑涓浜涙晥鏋滃闃村獎錛屽厜鐓х瓑錛岄兘鏄檮鐫鍦ㄨ繖鏉′富綰夸笂鐨勶紝鎵浠ワ紝濡傛灉浣犺兘鍦ㄤ綘鎵鐮旂┒鐨勬覆鏌撳紩鎿庝笂涔熸竻鏅板湴鐪嬪埌榪欐潯涓葷嚎錛屽彲鑳藉浣犳繁鍏ュ湴鐮旂┒瀹冧細澶ф湁甯姪錛屼笅闈紝鎴戜滑灝變竴璧鋒潵鎵懼埌OGRE涓殑榪欐潯涓葷嚎銆?/span> OGRE鐨勬覆鏌撳驚鐜兘鏄搗婧愪簬Root::renderOneFrame錛岃繖涓嚱鏁板湪OGRE鑷甫鐨?/span>example涓槸涓嶄細鏄懼紡璋冪敤鐨勶紝鍥犱負example閮借皟鐢ㄤ簡Root::startRendering錛岀敱startRendering鏉ヨ皟鐢?/span>renderOneFrame錛屽鏋滀綘鐢?/span>OGRE鏉ュ啓鐪熸鐨勬父鎴忥紝鎴栬呯紪杈戝櫒錛屼綘鍙兘灝遍渶瑕佸湪鐨勬秷鎭富寰幆涓皟鐢?/span>renderOneFrame浜嗭紝欏懼悕鎬濅箟錛岃繖涓嚱鏁板氨鏄鏁翠釜OGRE榪涜涓甯х殑鏇存柊錛屽寘鎷姩鐢伙紝娓叉煋鐘舵佺殑鏀瑰彉錛屾覆鏌?/span>api鐨勮皟鐢ㄧ瓑錛屽湪榪欎釜鍑芥暟涓紝浼氬寘鎷簡鎴戜滑涓婅堪浼唬鐮佺殑鍑犱箮鍏ㄩ儴鍐呭錛屾墍浠ユ槸鏈枃鐨勯噸鐐規墍鍦ㄣ?/span> 榪涘叆renderOneFrame錛屽彲浠ョ湅鍒板ご灝句袱涓?/span>fire鍑芥暟錛岃繖縐嶅嚱鏁板湪OGRE涓粡甯稿嚭鐜幫紝涓鑸兘鏄?/span>fire…start鍜?/span>fire…end涓璧峰嚭鐜扮殑錛屽湪榪欎簺鍑芥暟涓紝鍙兘浼氬鐞嗕竴浜涚敤鎴瘋嚜瀹氫箟鐨勬搷浣滐紝濡?/span>_fireFrameStarted灝變細瀵規墍浠ョ殑frameListener榪涜澶勭悊錛岃繖浜?/span>fire鍑芥暟鍙互鏆傛椂涓嶇敤鐞嗕細錛岀戶緇湅_updateAllRenderTargets錛屽湪榪欎釜鍑芥暟涓紝浼氬媧懼綋鍓嶆墍鐢ㄧ殑renderer瀵規墍鏈夊垱寤哄嚭鏉ョ殑render target榪涜update錛?/span>render target涔熷氨鏄覆鏌撶殑鐩殑鍦幫紝涓鑸細鏈変袱縐嶏紝涓縐嶆槸render texture錛屼竴縐嶆槸render buffer錛屾帴鐫榪涘叆RenderSystem::_updateAllRenderTargets錛屽彲浠ョ湅鍒板湪render system涓紝瀵瑰垱寤哄嚭鏉ョ殑render target鏄敤RenderTargetPriorityMap鏉ヤ繚瀛樼殑錛屼互渚挎寜鐓т竴瀹氱殑欏哄簭鏉ュrender target榪涜update錛屽洜涓哄湪娓叉煋鐗╀綋鍒?/span>render buffer鏃訛紝涓鑸細鐢ㄥ埌涔嬪墠娓叉煋濂界殑render texture錛屾墍浠?/span>render texture褰㈠紡鐨?/span>render target闇瑕佸湪render buffer涔嬪墠榪涜鏇存柊銆?/span> 榪涘叆render target鐨?/span>update錛屽彲浠ョ湅鍒幫紝瀹冧粛鐒舵妸update鎿嶄綔緇х畫浼犻掍笅鍘伙紝璋冪敤鎵鏈夋寕鍦ㄨ繖涓?/span>render target涓婄殑viewport鐨?/span>update銆?/span> Viewport鍏跺疄灝辨槸瀹氫箟浜?/span>render target涓婄殑涓鍧楄榪涜鏇存柊鐨勫尯鍩燂紝鎵浠ヤ竴涓?/span>render target鏄彲浠ユ寕澶氫釜viewport鐨勶紝浠ュ疄鐜板浜哄鎴樻椂鍒嗗睆錛屾垨鑰呮槸鐢諱腑鐢葷瓑鏁堟灉錛屽彲浠ユ妸OGRE涓殑viewport鐪嬫垚鏄繚瀛?/span>camera鍜?/span>rendertarget榪欎袱鑰呯殑緇勫悎錛屾妸viewport涓墍瀹氫箟鐨?/span>camera鎵鐪嬪埌鐨勫満鏅唴瀹規覆鏌撳埌viewport鎵瀹氫箟鐨?/span>render target鐨勫尯鍩熼噷銆?/span> Viewport榪樻湁涓涓噸瑕佷俊鎭槸ZOrder錛屽彲浠ョ湅鍒?/span>RenderTarget涓殑ViewportList甯︽湁涓涓瘮杈冨嚱鏁幫紝鎵浠ュ湪RenderTarget::update涓紝ZOrder瓚婂皬鐨勶紝瓚婂厛琚覆鏌擄紝鎵浠ワ紝濡傛灉涓や釜viewport鎵瀹氫箟鐨勫尯鍩熶簰鐩擱噸鍙犱簡錛岃屼笖ZOrder鍙堜笉涓鏍鳳紝鏈緇堢殑鏁堟灉灝辨槸ZOrder灝忕殑viewport鐨勫唴瀹逛細琚?/span>ZOrder澶х殑viewport鐨勫唴瀹規墍瑕嗙洊銆?/span> 緇х畫榪涘叆Viewport::update錛屽氨鍍忓墠闈㈡墍璇達紝瀹冭皟鐢ㄥ畠鎵寮曠敤鐨?/span>camera鏉ユ覆鏌撴暣涓満鏅紝鑰屽湪Camera::_renderScene涓紝鏄皟鐢?/span>SceneManager::_renderScene(Camera* camera, Viewport* vp, bool includeOverlays)銆?/span>SceneManager::_renderScene閲屽氨鏄叿浣撶殑娓叉煋嫻佺▼浜嗐備粠鍑芥暟鍚嶇О榪樻湁鍙傛暟涔熷彲浠ョ湅鍑烘潵錛岃繖涓嚱鏁扮殑浣滅敤灝辨槸鍒╃敤鎵鎸囧畾鐨?/span>camera鍜?/span>viewport錛屾潵鎶婂満鏅腑鐨勫唴瀹規覆鏌撳埌viewport鎵鎸囧畾鐨?/span>render target鐨勬煇鍧楀尯鍩熶腑銆傛牴鎹?/span>camera錛屾垜浠彲浠ュ畾鍑?/span>view matrix錛?/span>projection matrix錛岃繕鍙互榪涜瑙嗛敟鍓旈櫎錛屽彧娓叉煋鐪嬪緱瑙佺殑鐗╀綋銆傛敞鎰忥紝鎴戜滑榪欓噷鍙湅鏍囧噯鐨?/span>SceneManager鐨勬柟娉曪紝涓嶇湅BspSceneManager媧劇敓綾葷殑鏂規硶錛岃屼笖錛屾垜浠細鎶涘紑璺熶富綰挎棤鍏崇殑鍐呭錛屽瀵?/span>shadow鐨?/span>setup錛岄楠煎姩鐢葷殑鎾斁錛?/span>shader鍙傛暟鐨勪紶閫掔瓑錛屽洜涓烘垜浠彧娉ㄩ噸娓叉煋鐨勪富嫻佺▼銆?/span> 鍦?/span>SceneManager::_renderScene涓墍搴旂湅鐨勭涓涓噸瑕佸嚱鏁版槸_updateSceneGraph錛?/span>OGRE瀵瑰満鏅殑緇勭粐鏄氳繃鑺傜偣鏍戞潵緇勭粐鐨勶紝涓涓妭鐐癸紝浣犲彲浠ョ湅鎴愭槸絀洪棿涓殑鏌愪簺鍙樻崲鐨勭粍鍚堬紝濡備綅緗紝緙╂斁錛屾棆杞瓑錛岃繖浜涘彉鎹紝浼氫綔鐢ㄥ埌鎸傛帴鍦ㄨ繖浜涜妭鐐逛笂鐨勫叿浣撶殑鐗╀綋鐨勪俊鎭紝涔熷氨鏄錛岃妭鐐逛繚瀛樹簡world transform錛屽鍏蜂綋鐨勭墿浣擄紝濡備竴涓漢錛屽湪絀洪棿涓殑瀹氫綅錛岄兘鏄氳繃鎿嶄綔鑺傜偣鏉ュ畬鎴愮殑銆傚悓鏃惰妭鐐硅繕淇濆瓨浜嗕竴涓笘鐣屽潗鏍囩殑AABB錛岃繖涓?/span>AABB鑳藉綰蟲墍鏈夊畠鎵鎸傛帴鐨勭墿浣撶殑澶у皬錛屼富瑕佹槸鐢ㄤ簬瑙嗛敟瑁佸噺鐨勶紝濡傛灉褰撳墠鎽勫儚鏈虹湅涓嶈鏌愪釜鑺傜偣鐨?/span>AABB錛岄偅涔堣鏄庢憚鍍忔満鐪嬩笉瑙佽妭鐐規墍鎸傛帴鐨勬墍鏈夌墿浣擄紝鎵浠ュ湪娓叉煋鏃跺彲浠ュ榪欎釜鑺傜偣瑙嗚屼笉瑙併?/span> _updateSceneGraph鐨勫唴閮ㄥ鐞嗘瘮杈冪箒鐞愶紝鎴戜滑鍙渶鐭ラ亾錛岀粡榪囦簡_updateSceneGraph錛屽満鏅妭鐐規爲涓殑姣忎釜鑺傜偣閮界粡榪囦簡鏇存柊錛屽寘鎷綅緗紝緙╂斁錛屽拰鏂逛綅錛岃繕鏈夎妭鐐圭殑鍖呭洿鐩掋?/span> 緇х畫鍥炲埌SceneManager::_renderScene錛屾帴涓嬫潵瑕佺湅鐨勬槸setViewport錛屽畠浼氳皟鐢ㄥ叿浣撶殑renderer鐨?/span>setviewport鐨勬搷浣滐紝璁劇疆viewport涓墍鎸傛帴鐨?/span>render target涓哄綋鍓嶆墍瑕佹覆鏌撶殑鐩爣錛?/span>viewport涓殑鍖哄煙涓哄綋鍓嶆墍瑕佹覆鏌撶殑鐩爣涓殑鍖哄煙銆?/span> 鎺ヤ笅鏉ヨ紕板埌OGRE娓叉煋嫻佺▼涓殑涓涓噸瑕佺殑姒傚康錛?/span>Render Queue銆傝繖涓笢瑗垮疄鍦ㄥ唴瀹規瘮杈冨錛岃繕鏄互鍚庢湁鏈轟細鍗曠嫭鎻愬嚭鏉ヨ鍚э紝浣犲彲浠ョ畝鍗曟妸瀹冩兂鎴愭槸涓涓鍣紝閲岄潰鐨勫厓绱犲氨鏄?/span>renderable錛屾瘡涓?/span>renderable鍙互鐪嬫垚鏄瘡嬈¤皟鐢?/span>drawprimitive鍑芥暟鎵娓叉煋鐨勭墿浣擄紝鍙互鏄竴涓ā鍨嬶紝涔熷彲浠ユ槸妯″瀷鐨勪竴閮ㄥ垎銆傚湪RenderQueue涓紝瀹冧細鎸夋潗璐ㄦ潵鍒嗙粍榪欎簺renderable錛岃繕浼氬renderable榪涜鎺掑簭銆?/span> 鍦ㄦ瘡涓嬈¤皟鐢?/span>SceneManager::_renderScene鏃訛紝閮戒細璋冪敤SceneManager::prepareRenderQueue鏉ユ竻鐞?/span>RenderQueue錛岀劧鍚庡啀璋冪敤SceneManager::__findVisibleObjects鏉ユ妸褰撳墠鎽勫儚鏈烘墍鑳界湅瑙佺殑鐗╀綋閮藉姞鍏ュ埌RenderQueue涓?/span> SceneManager::__findVisibleObjects鏄竴涓掑綊鐨勫鐞嗚繃紼嬶紝瀹冧粠鍦烘櫙鐨勬牴鑺傜偣寮濮嬶紝鍏堟鏌ユ憚鍍忔満鏄惁鑳界湅瑙佽繖涓妭鐐圭殑鍖呭洿鐩掞紙鍖呭洿鐩掑湪_updateSceneGraph鏃跺凡緇忚綆楀ソ浜嗭級錛屽鏋滅湅涓嶈錛岄偅涔堣繖涓妭鐐癸紝榪樻湁瀹冪殑瀛愯妭鐐歸兘涓嶇敤綆′簡銆傚鏋滆兘鐪嬭錛屽啀媯嫻嬫寕鍦ㄨ繖涓妭鐐逛笂鐨勬墍鏈?/span>MovableObject錛屽鏋滃綋鍓嶆墍媯嫻嬬殑MovableObject鏄彲瑙佺殑錛屽氨浼氳皟鐢ㄥ畠鐨?/span>_updateRenderQueue鏂規硶錛屼竴鑸湪榪欎釜鏂規硶閲屽氨鍙互鎶婂拰榪欎釜MovableObject鐩稿叧鐨?/span>renderable閫佸叆RenderQueue浜嗐?/span> 榪欓噷瑕佽璇?/span>MovableObject錛?/span>MovableObject涓昏鏄敤浜庤〃紺哄満鏅腑紱繪暎鐨勭墿浣擄紝濡?/span>Entity錛岄【鍚嶆濅箟錛岃兘縐誨姩鐨勭墿浣擄紝涓嶈繃瀹冪殑“鑳界Щ鍔?#8221;榪欎釜鑳藉姏鏄閫氳繃SceneNode鏉ュ疄鐜扮殑錛屾墍浠?/span>MovableObject鏉ヨ兘鏄劇ず鍑烘潵錛岄鍏堝緱鍏堟寕鎺ュ湪鏌愪釜鍦烘櫙鑺傜偣涓婏紝閫氳繃鍦烘櫙鑺傜偣鏉ュ畾浣嶃備綘鍙互鎺у埗MovableObject鐨勪竴浜涘睘鎬э紝濡傛煇涓?/span>MovableObject鏄惁瑕佹樉紺猴紝鏄惁瑕侀殣钘忥紝閮藉彲浠ラ氳繃MovableObject::setVisible鏂規硶鏉ュ疄鐜般?/span> 媯嫻嬪畬璇ヨ妭鐐逛笂鐨?/span>MovableObject涔嬪悗錛屽氨緇х畫璋冪敤鎵鏈夊瓙鑺傜偣鐨?/span>_findVisibleObjects鏂規硶錛屼竴鐩撮掑綊涓嬪幓銆傝繖鏍鳳紝灝辮兘鎶婂満鏅腑鎵鏈夎娓叉煋鐨?/span>renderable鎵鍔犲叆鍒?/span>RenderQueue涓簡銆?/span> 鑷蟲錛屾垜浠氨鎷ユ湁浜嗚娓叉煋鐨勭墿浣撶殑淇℃伅浜嗭紝鎺ヤ笅鏉ュ氨鏄榪欎簺鐗╀綋榪涜娓叉煋浜嗭紝浣犱細鍙戠幇璺?/span>D3D鎴?/span>OpenGL鐨勪唬鐮佸緢綾諱技鐨勮皟鐢細 mDestRenderSystem->clearFrameBuffer mDestRenderSystem->_beginFrame mDestRenderSystem->_setProjectionMatrix mDestRenderSystem->_setViewMatrix _renderVisibleObjects(); mDestRenderSystem->_endFrame(); 榪欎簺api鐨勪綔鐢ㄥ拰D3D涓殑綾諱技璋冪敤鐨勪綔鐢ㄩ兘宸笉澶氾紝榪欓噷鍐嶈涓涓?/span>_renderVisibleObjects()錛屽湪榪欎釜鍑芥暟涓紝浼氬RenderQueue涓殑姣忎釜renderable榪涜娓叉煋錛岀敤鐨勬槸visitor妯″紡鏉ラ亶鍘嗘搷浣滄瘡涓?/span>renderable錛屾渶緇堝湪SceneManager::renderSingleObject涓彇鍑烘瘡涓?/span>renderable鎵淇濆瓨鐨勯《鐐癸紝绱㈠紩錛屼笘鐣岀煩闃電瓑淇℃伅錛屾潵榪涜娓叉煋銆傝繖鍏朵腑榪樺寘鎷簡鏌ユ壘紱昏renderable鏈榪戠殑鍏夋簮絳夋搷浣滐紝姣旇緝澶嶆潅銆?/span> 鍒拌繖閲岋紝SceneManager::_renderScene鐨勬祦紼嬪熀鏈蛋瀹屼簡錛屼篃灝辨槸璇達紝OGRE涓甯т腑鐨勬覆鏌撴祦紼嬪樊涓嶅涔熺粨鏉熶簡錛屼綘搴旇涔熷彂鐜幫紝榪欎釜嫻佺▼璺熶綘鐢?/span>D3D鍐欎竴涓畝鍗曠▼搴忕殑嫻佺▼鍩烘湰鏄竴鏍風殑錛屽湪榪欎釜嫻佺▼鐨勫熀紜涓婏紝鍐嶅幓鐪嬪叿浣撶殑瀹炵幇錛屽鎬庝箞鏍瘋緗汗鐞嗭紝鎬庝箞鏍瘋皟鐢ㄤ綘鐔熸倝鐨?/span>D3D鎴?/span>OpenGL鐨?/span>API鏉ユ覆鏌撶墿浣擄紝搴旇浼氱畝鍗曞緱澶氥?/span> 瀵?/span>OGRE鐨勬覆鏌撴祦紼嬬殑澶ф浠嬬粛鍒拌繖閲屼篃緇撴潫浜嗭紝寰堝緇嗚妭閮芥病娑夊強錛屼互鍚庢湁鏈轟細鍐嶅啓鍚с?/span>
posted on 2007-05-22 10:59 hitmaen 闃呰(762) 璇勮(2) 緙栬緫 鏀惰棌 寮曠敤 鎵灞炲垎綾? Ogre
Ogre鏄竴涓法鎿嶄綔緋葷粺騫沖彴鐨勫紑婧?D寮曟搸錛屾棦鏀寔DirectX錛屼篃鏀寔浣跨敤OpenGL錛屾敮鎸佸彲鏇挎崲鐨勫満鏅鐞嗙畻娉曪紙BSP, OCT錛夈備負Ogre鎻愪緵榪欎簺鐏墊椿鍙墿灞曟х殑鍩虹涔嬩竴灝辨槸鍏墮潰鍚戞彃浠剁殑璁捐銆?br>
寰堝甯哥敤鐨勮蔣浠跺ぇ閮芥彁渚涗簡鎻掍歡鎺ュ彛錛岀敤浠ユ墿灞曞簲鐢ㄧ▼搴忚璁¤呮渶鍒濇湭鎯沖埌鐨勫姛鑳斤紝姣旇緝甯歌鐨勮濡侾hotoShop鐨勬護闀滐紝After Effect涓殑鍚勭鎻掍歡錛堟渶鏈夊悕鐨勬瘮濡俿hine錛夛紝3dMax鐨勬彃浠惰濡傛覆鏌撳櫒錛岄瓟鍏戒笘鐣岀殑杈呭姪鎻掍歡絳夌瓑銆?br>
閫氬父錛屾彃浠舵湰韜氬父涔熼渶瑕佸疄鐜頒富搴旂敤紼嬪簭鎵闇瑕佺殑蹇呰鎺ュ彛錛屼粠鑰屼嬌寰楁彃浠跺彲浠ヨ搴旂敤紼嬪簭鍔犺澆鎵ц銆傛澶栵紝鎻掍歡鐨勫疄鐜頒篃闇瑕佺敱涓誨簲鐢ㄧ▼搴忔彁渚涗竴浜涙帴鍙pi錛岄氳繃榪欎簺鎺ュ彛錛屾彃浠跺彲浠ュ涓誨簲鐢ㄧ▼搴忕殑鍔熻兘榪涜璋冪敤銆?br>
鎻掍歡鍙互鏄姩鎬侀摼鎺ュ簱錛坵in32騫沖彴涓婁負DLL鏂囦歡錛夛紝涔熷彲浠ユ槸浠ヨ剼鏈殑褰㈠紡鎻愪緵鐨勶紝姣斿欖斿吔涓栫晫涓殑鎻掍歡灝辨槸浣跨敤lua緙栧啓鐨勶紝鎻掍歡涔熷彲鑳芥槸鏌愮搴旂敤紼嬪簭鑷畾涔夌殑鏂囦歡錛屽彧瑕佽搴旂敤紼嬪簭鎻愪緵浜嗗垱寤鴻綾繪枃浠剁殑鏂規硶騫跺疄鐜拌В鏋愩佹墽琛屽姛鑳藉嵆鍙傦紙涓嶅悓鐨勫疄鐜板艦寮忓悇鏈夊埄寮婏紝鍏蜂綋闇瑕佸弬鑰冩彃浠跺強搴旂敤紼嬪簭鎵澶勭殑榪愯鐜榪涜鍙栬垗錛?br>
閲囩敤鎻掍歡鐨勪竴涓法澶х殑濂藉錛屼互鍙婂緢澶氬簲鐢ㄧ▼搴忎腑浣跨敤鎻掍歡鐨勪富瑕佺洰鐨勫氨鏄紝鎴戜滑鍙互鍦ㄤ笉闇瑕佹敼鍔ㄥ簲鐢ㄧ▼搴忔湰韜殑鎯呭喌涓嬫墿灞曞簲鐢ㄧ▼搴忕殑鍔熻兘銆?br>
鍦∣gre涓紝鎻掍歡琚敤鏉ユ彁渚涙覆鏌撳瓙緋葷粺錛圧enderSystem錛夛紝涓嶅悓綾誨埆鐨勫浘褰PI琚皝瑁呭湪涓嶅悓鐨勬覆鏌撳瓙緋葷粺鐨勮綰垮綋涓紝Ogre榛樿鎻愪緵浜咲X鍜孫penGL鐨勫疄鐜幫紝鐢氳嚦錛屽鏋滄垜浠箰鎰忥紝鐢氳嚦鍙互鍙敤緇樼偣鍑芥暟瀹炵幇涓濂楃函杞歡鐨勬覆鏌撳瓙緋葷粺鎻愪緵緇橭gre浣跨敤銆備互姝や負渚嬶紝鐢ㄧ畝鍗曠殑褰㈠紡鏉ュ睍紺鴻繖縐嶅疄鐜板ぇ姒傜被浼間簬涓嬮潰榪欐牱錛?br>
class RenderSystem
{
// … operations that a render system need to support
};
// In DX_RenderSystem.dll (in plugin dx rendersystem )
class DX_RenderSystem : public RenderSystem
{
// … implementation & override of the operations from RenderSystem using DirectX
};
// In GL_RenderSystem.dll (in plugin openGL rendersystem)
class GL_RenderSystem : public RenderSystem
{
// … implementation & override of the operations from RenderSystem using OpenGL
};
// …. We could implement any other rendersystem as we like
鍦ㄥ紩鎿庣殑鍐呴儴錛圤greMain錛夛紝鎻掍歡鍦ㄥ垵濮嬪寲鐨勬椂鍊欙紝灝嗕竴涓覆鏌撳瓙緋葷粺鐨勫疄渚嬪垱寤哄嚭鏉ワ紙鍙兘鏄疍X_RenderSystem錛屼篃鍙兘鏄?nbsp;GL_RenderSystem錛屼篃鍙兘鏄叾浠栵級錛屽茍灝嗕箣鎸傛帴鍒癘greMain鐨凴oot瀵硅薄褰撲腑銆傛鍚庯紝OgreMain涓殑Root鎵鏈夌殑娓叉煋鎿嶄綔涔熷氨鍙互閫氳繃璇ユ帴鍙h闂彃浠朵腑鍒涘緩鐨勬覆鏌撳瓙緋葷粺浜嗐?br>
鏈枃鎺ヤ笅鏉ュ垎鏋怬gre鏄浣曞疄鐜版彃浠剁殑錛屼互鍙婃彃浠舵槸濡備綍涓嶰greMain涓誨紩鎿庤繘琛岄厤鍚堢殑銆?br>
浜嬪疄涓婏紝鎯崇紪鍐欎竴涓彃浠舵槸寰堢畝鍗曠殑錛屾垜浠彧闇瑕佺害瀹氬嚑涓帴鍙o紝鎻掍歡灝嗚繖浜涙帴鍙e疄鐜頒簡錛屼富搴旂敤紼嬪簭閫氳繃鏌愮鏈哄埗錛堥厤緗枃浠?/span>/閬嶅巻鏌愪釜鐩綍錛夊姞杞芥彃浠訛紝騫舵煡鎵炬帴鍙e湪鎻掍歡涓槸鍚﹁瀹炵幇浜嗭紝濡傛灉瀹炵幇浜嗭紝鍒欒皟鐢ㄤ箣鍗沖彲銆?br>
涓涓畝鍗曠殑渚嬪瓙濡備笅錛?br>
// in xx.dll
__declspec(dllexport) extern “C” // __declspec(dllexport)鍛婄煡緙栬瘧鍣ㄩ渶瑕佸皢璇ュ嚱鏁板鍑?br>
// extern “C” 鍛婄煡緙栬瘧鍣ㄤ笉瑕佸鍑芥暟鍋欳++鍚嶅瓧閲嶆暣
const char* GetPluginName(void)
{
return “Test Plugin”;
}
// in application
HMODULE hInst = LoadLibrary(”xx.dll”);
if (!hInst) return;
typedef const char* (*GetPluginNameFunc)(void);
GetPluginNameFunc pFunc = GetProcAddress(hInst, “GetPluginName”);
if (!pFunc) return;
const char* szPluginName = pFunc();
// … do other things
浜嬪疄涓婏紝鍦–璇█閲岋紝鎴戜滑灝卞彲浠ラ氳繃榪欑鏂瑰紡錛岀害瀹氫竴濂楅渶瑕佸疄鐜扮殑鎺ュ彛錛屼氦緇欐彃浠跺疄鐜板嵆鍙傚湪榪欓噷錛屾彃浠剁殑鍔熻兘閮芥槸鍦╠ll涓疄鐜扮殑錛屾垜浠渶瑕佸姞杞?nbsp;dll錛屼繚瀛樺彞鏌勶紝騫跺湪鎻掍歡鍗歌澆鐨勬椂鍊欓噴鏀劇浉搴旂殑璧勬簮銆傚湪C++涓紝鎴戜滑鏄劇劧鍙互鍋氱殑鏇村ソ涓鐐癸紝姣斿灝哾ll妯″潡鐩稿叧鐨勫姛鑳戒互鍙婅祫婧愬皝瑁呰搗鏉ワ細
class DynLib
{
public:
bool Load(const char* szPluginPath);
void* GetProcAddress(const char* szProcName);
private:
HMODULE m_hInst;
};
bool DynLib::Load(const char* szPluginPath)
{
m_hInst = LoadLibrary(szPluginPath);
return m_hInst != NULL;
}
void* DynLib::GetProcAddress(const char* szProcName)
{
return ::GetProcAddress(m_hInst, szProcName);
}
榪欐牱涓鏉ワ紝鎴戜滑灝辨湁浜嗕竴涓狣LL鐨勭畝鍗曞皝瑁呫?br>
浣嗘槸涓涓猟ll閲屾湭蹇呭彧鑳芥湁涓涓彃浠訛紝鍋囪嫢鎴戜滑綆鍗曠殑鎶婃彃浠舵帴鍙h璁′負涓濂桟瀵煎嚭鍑芥暟錛屾垜浠氨涓嶅緱涓嶉潰瀵硅繖縐嶅眬闄愩傜粡鍏哥殑鍋氭硶渚濇棫鏄娊璞★紝Ogre涓畾涔変簡涓涓彃浠舵帴鍙o紝姣忎竴涓疄鐜頒簡鎻掍歡鎺ュ彛鐨勫疄渚嬮兘浠h〃浜嗕竴涓彃浠訛紝濡備笅錛?br>
class Plugin
{
public:
virtual const String& getName() = 0;
virtual void install() = 0;
virtual void initialize() = 0;
virtual void shutdown() = 0;
virtual void uninstall() = 0;
};
Ogre鐨勬瘡涓涓彃浠墮兘闇瑕佸疄鐜頒互涓婃帴鍙c傝鎺ュ彛鎻愪緵鐨勫姛鑳藉寘鎷細
install 鎻掍歡琚姞杞芥椂璋冪敤銆?br>
initialize 鎻掍歡琚垵濮嬪寲鏃惰皟鐢ㄣ?br>
shutdown 鎻掍歡琚弽鍒濆鍖栨椂璋冪敤銆?br>
uninstall 鎻掍歡琚嵏杞芥椂璋冪敤銆?br>
涓嶈繃錛屽崟鏈夎繖涓帴鍙o紝鎻掍歡榪樻槸鏃犳硶宸ヤ綔銆傛彃浠朵腑榪橀渶瑕佹彁渚涗袱涓害瀹氱殑C瀵煎嚭鍑芥暟銆傝繖涓◢鍚庡啀璇淬?br>
Ogre鍦≧oot瀵硅薄涓粺涓綆$悊鎻掍歡錛屽洜姝oot瀵硅薄鎻愪緵浜嗕互涓嬩笌鎻掍歡鐩稿叧鐨勬帴鍙o細
class Root
{
// …
void loadPlugin(const String& pluginName);
void unloadPlugin(const String& pluginName);
void installPlugin(Plugin* plugin);
void uninstallPlugin(Plugin* plugin);
// 浠ュ強瀵瑰簲鐨勫鐞嗗涓彃浠剁殑鎺ュ彛
// …
};
褰搇oadPlugin鍑芥暟琚皟鐢ㄦ椂錛孫gre灝嗗姞杞借鎻掍歡鐨刣ll錛屼粠涓煡鎵懼茍璋冪敤鍚嶄負dllStartPlugin鐨勫鍑哄嚱鏁般?br>
瀵瑰簲鐨勶紝褰搖nloadPlugin鍑芥暟琚皟鐢ㄦ椂錛孫gre灝嗕粠璇ll涓皟鐢╠llStopPlugin鍑芥暟銆傚茍灝嗚dll鍗歌澆銆?br>
姣忎釜鎻掍歡鍦ㄥ疄鐜扮殑鏃跺欙紝閮藉繀欏繪彁渚涗笂榪扮殑涓や釜C瀵煎嚭鍑芥暟銆傚叾涓紝dllStartPlugin璐熻矗鍒涘緩鎻掍歡瀹炰緥錛屽茍璋冪敤 Root::installPlugin錛屽皢鍒涘緩濂界殑鎻掍歡鎸囬拡浼犻掔粰Root瀵硅薄銆傚湪榪欓噷錛宒llStartPlugin瀹為檯鍙互鍒涘緩澶氫釜鎻掍歡瀹炰緥錛屽茍渚濇璋冪敤Root::installPlugin錛岃繖鏍鋒垜浠氨鍙互鍦ㄤ竴涓狣LL涓寘鍚涓彃浠朵簡銆傚湪dllStopPlugin鏃訛紝鍒欓渶瑕佽皟鐢?nbsp;Root::uninstallPlugin錛屽茍灝嗘彃浠禗LL涓垱寤虹殑plugin瀹炰緥閲婃斁鎺夈?br>
涓涓吀鍨嬬殑dllStartPlugin鐨勫疄鐜板儚榪欐牱錛?br>
class D3D9Plugin : public Plugin
{
//…
};
D3D9Plugin* plugin;
__declspec(dllexport) extern “C”
void dllStrartPlugin(void)
{
plugin = new D3D9Plugin();
Root::getSingleton().installPlugin(plugin);
}
__declspec(dllexport) extern “C”
void dllStopPlugin(void)
{
Root::getSingleton().uninstallPlugin(plugin);
delete plugin;
}
Root::getSingleton().installPlugin(plugin)浼氳礋璐h皟鐢ㄦ彃浠剁殑install浠ュ強initialise鎿嶄綔錛屽茍灝嗘彃浠剁殑鎸囬拡瀛樻斁璧鋒潵錛屼互澶囧嵏杞芥椂浣跨敤銆?br>
Plugin::install浠ュ強Plugin::initialise鍒欏垎鍒礋璐e垱寤篛greMain鎻愪緵鎵╁睍鍔熻兘鎺ュ彛鐨勫疄渚嬶紝浠ュ強灝嗗垱寤哄ソ鐨勫璞℃寕杞藉埌搴旂敤紼嬪簭褰撲腑銆?br>
涓涓吀鍨嬬殑Plugin鐨勮涓哄儚榪欐牱錛?br>
void BspSceneManagerPlugin::install()
{
mBspFactory = new BspSceneManagerFactory();
}
void BspSceneManagerPlugin::initialise()
{
Root::getSingleton().addSceneManagerFactory(mBspFactory);
}
鍏朵腑錛孊spSceneManagerFactory鏄戶鎵胯嚜OgreMain涓殑SceneManagerFactory鐨勬淳鐢熺被銆?br>
( class BspSceneManagerFactory : public SceneManagerFactory {…} )
閫氳繃灝嗗満鏅鐞嗗櫒宸ュ巶娣誨姞鍒癛oot瀵硅薄褰撲腑錛屾彃浠跺姩鎬佺殑灝嗗叾鍔熻兘娣誨姞鍒頒簡OgreMain褰撲腑銆?br>
PS: SceneManagerFactory鏄竴涓敤浜庡垱寤篠ceneManager鐨勫伐鍘傘係ceneManager鍒欐槸琚敤浜庡満鏅鐞嗙殑綆$悊鍣ㄣ傚叿浣撶殑 SceneManager涔熸牴鎹畻娉曚笉鍚岃屼笉鍚岋紝Ogre鑷甫鎻愪緵浜嗕袱縐嶇被鍨嬬殑鍦烘櫙綆$悊綆楁硶鎻掍歡錛欱sp浠ュ強Octree(瀹炵幇浜嗕袱涓搴旂殑鎻掍歡錛屽垎鍒槸 Plugin_BSPSceneManager浠ュ強Plugin_OctreeSceneManager)銆?br>
閫氳繃涓婅堪鏂瑰紡錛孫greMain鏍稿績寮曟搸騫朵笉闇瑕佸叧蹇冨満鏅鐞嗙畻娉曠殑鍏蜂綋瀹炵幇錛屼笉闇瑕佸叧蹇冩覆鏌撳瓙緋葷粺鐨勫叿浣撳疄鐜幫紝涓嶉渶瑕佸叧蹇冪矑瀛愮郴緇熺殑鍏蜂綋瀹炵幇錛岀瓑絳夈備竴鍒囪繖浜涙墿灞曟х殑鍔熻兘閮介氳繃鎻掍歡瀹炵幇錛屽茍鍦ㄥ姞杞芥椂鍔ㄦ佹寕杞藉埌OgreMain褰撲腑錛屼緵OgreMain鐨勫紩鎿庢牳蹇冧嬌鐢ㄣ?br>
浣跨敤鎻掍歡鏃跺嚑涓渶瑕佹敞鎰忕殑鍦版柟錛?br>
1錛?nbsp; 璋冪敤鎻掍歡DLL鏂規硶鍒涘緩鐨勫璞¢渶瑕佷氦鐢辨彃浠禗LL閲婃斁銆傦紙鍥犱負涓嶅悓鐨勯摼鎺ュ崟鍏冨彲鑳藉叿鏈変笉鍚岀殑鍐呭瓨綆$悊涓婁笅鏂囩幆澧冿紝姝ゅ鐨刵ew涓庡郊澶勭殑new鍦ㄨ涔変笂鏈繀絳夊悓錛?br>
2錛?nbsp; 璋冪敤鎻掍歡DLL鏂規硶鑾峰彇鐨勬彃浠跺唴瀵硅薄鐨勫紩鐢ㄦ垨鎸囬拡錛屽湪鎻掍歡DLL鍗歌澆涔嬪悗灝辨槸鏃犳晥鐨勶紝蹇呴』淇濊瘉涓嶅啀浣跨敤銆傦紙姣旇緝瀹規槗寮曞彂闂鐨勪竴涓吀鍨嬩緥瀛愭槸浠庢彃浠朵腑浼犻掑洖涓涓紩鐢ㄨ鏁板瓧絎︿覆錛屽綋DLL琚嵏杞藉悗錛屽瓧絎︿覆鍐呮寚鍚戝疄闄呮暟鎹殑鎸囬拡宸茬粡鏃犳晥錛屼絾鏄湪璇ュ璞℃瀽鏋勬椂錛屼粛闇瑕佽闂鎸囬拡錛?/span>
]]>
]]>
鏅?
閫氭儏鍐典笅錛屾垜浠嬌鐢ㄥ崟涓鐨勬憚鍍忔満錛屽疄鐜扮涓浜虹О鎴栬呯涓変漢縐幫紝鏈夋椂鎴戜滑鐢ㄥ涓憚鍍忔満鍦ㄥ崟涓鐨勭獥鍙d腑鍒囨崲瑙嗚錛屾瘮濡備粠絎竴浜虹О鍒囨崲鍒扮涓変漢縐拌瑙掞紙娓告垙涓薄
瑙佷笉椴滐級錛岃岀敾涓敾灝嗕細鍚屾椂灞曠幇絎竴浜虹О鍜岀涓変漢縐幫紙鎴栬呯涓変漢縐頒笌絎笁浜虹О錛夛紝涔熷氨鏄鍚屾椂瀛樺湪涓嶅悓鐨勮瀵熺偣錛岃繖灝遍渶瑕佸紿楀彛澶氭憚鍍忔満鍒嗗埆榪涜娓叉煋銆?br>
鐢∣gre瀹炵幇鐢諱腑鐢誨姛鑳芥槸浠舵瘮杈冨鏄撶殑浜嬫儏錛岄鍏堬紝鎼緩涓涓櫘閫氱殑鍦烘櫙錛屽叧浜庤繖鏂歸潰鐨勫伐浣?a >www.ogre3d.org/wiki閲屾湁璇︾粏鐨勬暀紼嬶紝涓嶈禈榪頒簡銆?br>
涓嬮潰榪涘叆鍏抽敭閮ㄥ垎銆?br>
鍦∣gre閲屾憚鍍忔満Camera鍜岃鍙iewport鏄竴涓瀵瑰簲鐨勫叧緋伙紝鏅氭儏鍐典笅鍖呭惈涓涓憚鍍忔満瀵瑰簲涓涓鍙o紝鎴戜滑鍙娣誨姞鎽勫儚鏈哄拰涓庝箣瀵瑰簲鐨勮鍙e氨OK浜嗭紒
鎴戠殑紿楀彛綾婚噷鏄繖鏍烽厤緗甇gre鐨勶紝鍩烘湰鍜屾暀紼嬬ず渚嬮噷鐨勪竴鏍楓?br>
{
mRoot = new Root();
// 璁劇疆璧勬簮
setupResources();
// 閰嶇疆娓叉煋紿楀彛
bool carryOn = configure();
if (!carryOn)
return false;
// 鍒涘緩鍦烘櫙綆$悊鍣?/span>
chooseSceneManager();
// 鍒涘緩鎽勫儚鏈?/span>
createCamera();
// 鍒涘緩瑙嗗彛
createViewports();
// 璁劇疆緙虹渷 mipmap 絳夌駭
TextureManager::getSingleton().setDefaultNumMipmaps(5);
// 鍒涘緩鎵鏈夎祫婧愮洃鍚櫒錛堜負浜嗗姞杞藉睆騫曪級
createResourceListener();
// 鍔犺澆璧勬簮
loadResources();
// 鍒涘緩鍦烘櫙
createScene();
// 鍒涘緩甯х洃鍚櫒
createFrameListener();
return true;
}
鍏朵腑錛?span style="color: #000000;">createCamera(); // 鍒涘緩鎽勫儚鏈?/span> 鍜?createViewports(); // 鍒涘緩瑙嗗彛 鏄垜浠渶瑕佸叧蹇冪殑銆?br>
createCamera()錛?/span>
{
// 涓葷獥鍙f憚鍍忔満
mCamera_1 = mSceneMgr->createCamera("Cam_1");
mCamera_1->setPosition(Vector3(0,0,300));
mCamera_1->lookAt(Vector3(0,0,-300));
mCamera_1->setNearClipDistance(5);
// 鐢諱腑鐢繪憚鍍忔満
mCamera_2 = mSceneMgr->createCamera("Cam_2");
mCamera_2->setPosition(Vector3(100,100,300));
mCamera_2->lookAt(Vector3(-100,-100,-300));
mCamera_2->setNearClipDistance(5);
}
createViewports()錛?br>
{
// 涓葷獥鍙?/span>
Viewport* vp_1 = mWindow->addViewport( mCamera_1 );
vp_1->setBackgroundColour( ColourValue(0,0,0) );
mCamera_1->setAspectRatio(
Real( vp_1->getActualWidth() ) / Real( vp_1->getActualHeight() ) );
// 鐢諱腑鐢?/span>
Viewport* vp_2 = mWindow->addViewport( mCamera_2, 1, 0.7, 0.05, 0.25, 0.25 );
vp_2->setBackgroundColour( ColourValue(0,0,0) );
vp_2->setOverlaysEnabled(false);
mCamera_2->setAspectRatio(
Real( vp_2->getActualWidth() ) / Real(vp_2->getActualHeight() ) );
}
鍦?/span>addViewport涓垜浠帶鍒剁敾涓敾瑙嗗彛鍦ㄤ富紿楀彛涓殑浣嶇疆鍜屽ぇ灝忥紙娉ㄦ剰榪欓噷鏄?锝?鐨勫彇鍊艱寖鍥達紝綾諱技浜庤創鍥懼潗鏍囷級
榪欐牱灝卞疄鐜頒簡涓嬪浘鎵紺烘晥鏋滅殑涓鍗婁簡銆?br>
鏄笉鏄緢閰鳳紵濡傛灉榪涗竴姝ヨ璁℃垚錛屽綋瑙﹀彂鏌愪竴浜嬩歡鏃跺皢鐢諱腑鐢葷獥鍙e姩鎬佺殑寮瑰嚭錛岄偅灝辨洿閰蜂簡錛佹湁鍏磋叮鐨勫彲浠ヨ瘯涓璇曪細P
濡傚浘鎵紺猴紝鎴戝彟澶栬繕鍒╃敤浜咰EGUI緇欑敾涓敾紿楀彛鍔犱簡涓竟妗嗭紝騫朵笖甯︿簡涓涓猚ombobox鐢ㄦ潵鎺у埗鏇村鎽勫儚鏈轟箣闂寸殑鍒囨崲錛孋EGUI鏄敤鑴氭湰鏉ュ畾涔夌晫闈㈢殑錛屽疄鐜頒篃姣旇緝綆鍗曘傛湁鍏矯EGUI閮ㄥ垎鐨勪粙緇嶏紝鍦╫gre wiki涓婃湁鏇磋緇嗙殑鏁欑▼銆?br>
#end
璇勮
# re: [ 璇曢獙 ] 鐢∣gre瀹炵幇鐢諱腑鐢?[ 鎴浘 ]
2007-05-22 16:14
涓囪繛鏂?/a>
# re: [ 璇曢獙 ] 鐢∣gre瀹炵幇鐢諱腑鐢?[ 鎴浘 ]
2007-05-22 19:05
hitmaen
@涓囪繛鏂?
楣扮溂鏄粈涔堬紵涓嶆槸鎸囧皬鍦板浘錛岀帺涓鐜╄窇璺戝崱涓佽濺灝辨槑鐧芥垜璇寸殑鐢諱腑鐢繪槸浠涔堜簡 鍥炲 鏇村璇勮
]]>
鍦?span lang="EN-US">Ogre1.2.5鐗堟湰涓紝閫氳繃涓?span lang="EN-US">Ogre瀹樻柟璁哄潧鐨勫紑鍙戣呰璁哄疄鐜頒簡Overlay鐨勪腑鏂囨樉紺猴紝褰撳垵鐨勫疄鐜伴潪甯哥殑鎬紓錛屽叿浣撶殑瀹炵幇鍙互鍙傝Ogre瀹樻柟璁哄潧銆?span lang="EN-US">
闅忕潃Ogre鐨勬洿鏂幫紝鐜板湪Ogre宸茬粡鍙戝竷浜?span lang="EN-US">1.4.7錛?span lang="EN-US">1.4緋誨垪鐗堟湰鏈変竴涓噸瑕佺殑鏀硅繘錛屽氨鏄姞鍏ヤ簡UTFString錛岃繖涓?span lang="EN-US">Ogre涓枃鏄劇ず浜堜互寰堝ぇ鐨勫府鍔┿備負浜嗕究浜庢紨紺猴紝鎴戠洿鎺ヤ嬌鐢?span lang="EN-US">Ogre鑷甫鐨?span lang="EN-US">Overlay錛屼篃灝辨槸澶у鐔熸倝鐨?span lang="EN-US">DebugOverlay錛屾祴璇曞伐紼嬫垜閫夋嫨Demo_ParticleFX錛岄夋嫨鍏朵粬鐨勪篃娌℃湁鍏崇郴銆傜幇鍦ㄧ紪璇戝畠錛岃繍琛屽悗寰楀埌涓嬪浘錛?span lang="EN-US">
鍥劇殑鏈宸︿笅瑙掓樉紺虹殑灝辨槸鑻辨枃DebugOverlay錛屾帴涓嬫潵鎴戜滑鐨勪換鍔″氨鏄妸瀹冪紪紼嬩腑鏂囩殑錛?span lang="EN-US">^_^銆?span lang="EN-US">
Overlay涓枃鍖栨搷浣滄楠ゅ涓?span lang="EN-US">
1. 鎵撳紑OgreSDK\media\packs\ OgreCore.zip銆?span lang="EN-US">
2. 鎵撳紑C:\WINDOWS\Fonts錛屾妸simhei.ttf娣誨姞鍒?span lang="EN-US">OgreCore.zip錛岋紙浠涔堬紝娌℃湁simhei.ttf榪欎釜鏂囦歡錛岄偅灝辮繕鍏朵粬鐨勪腑鏂?span lang="EN-US">ttf瀛椾綋鍚э級銆?span lang="EN-US">
3. 鎵撳紑OgreCore.zip涓殑Ogre.fontdef錛岄噷闈㈡湁BlueHighway榪欎釜瀛椾綋瀹氫箟鍧楋紝鍦ㄤ粬鐨勪笅闈㈡坊鍔犳垜浠殑SimHei錛?span lang="EN-US">code_points閲岄潰鐨勪竴澶у爢鏁板瓧鐪嬩笉鏄庣櫧娌″叧緋伙紝闅忓悗鏂囩珷浼氳В閲娿?span lang="EN-US">
SimHei
{
type truetype
source simhei.ttf
size 16
resolution 96
code_points
33-166 24403-24403 21069-21069 24103-24103 36895-36895 29575-29575
24179-24179 22343-22343 26368-26368 39640-39640 20302-20302 19977-19977
35282-35282 24418-24418 25968-25968 37327-37327 25209-25209 27425-27425
}
4. 鎵撳紑OgreCore.zip涓殑OgreDebugPanel.overlay錛屾妸BlueHighway鍏ㄩ儴鏇挎崲鎴?span lang="EN-US">SimHei錛屾垜浠浣跨敤涓枃瀛椾綋浜嗭紝鍢垮樋銆?span lang="EN-US">
5. 淇敼瀹屾垚鍚庯紝紜繚鎵鍋氱殑淇敼宸茬粡淇濆瓨鍒?span lang="EN-US">OgreCore.zip銆?span lang="EN-US">
6. 榪涘叆Ogre瑙e喅鏂規錛屾墦寮鏂囦歡ExampleFrameListener.h錛屾妸54-59琛岀殑浠g爜鏇挎崲濡備笅錛?span lang="EN-US">
static String currFps = "Current FPS: ";
static String avgFps = "Average FPS: ";
static String bestFps = "Best FPS: ";
static String worstFps = "Worst FPS: ";
static String tris = "Triangle Count: ";
static String batches = "Batch Count: ";
static DisplayString currFps = L"褰撳墠甯ч熺巼: ";
static DisplayString avgFps = L"騫沖潎甯ч熺巼: ";
static DisplayString bestFps = L"鏈楂樺撫閫熺巼: ";
static DisplayString worstFps = L"鏈浣庡撫閫熺巼: ";
static DisplayString tris = L"涓夎褰㈡暟閲?span lang="EN-US">: ";
static DisplayString batches = L"鎵規: ";
7. 鏈鍚庨噸鏂扮紪璇戝伐紼嬶紝涓嬮潰鏄垜榪愯鐨勬埅鍥撅紝鏄笉鏄凡緇忔樉紺轟腑鏂囦簡錛?span lang="EN-US">^_^銆?span lang="EN-US">
鐜板湪鍐嶆潵鐪嬬湅SimHei涓殑code_points鏄浣曠敓鎴愮殑錛岃繖涓彲浠ュ弬鑰冩垜涓婃鍐欑殑榪欑瘒鏂囩珷http://www.cnblogs.com/gogoplayer/archive/2008/05/09/1189795.html錛岃嚦姝わ紝瀹炵幇Overlay涓枃鏄劇ず銆?/span>
杞澆璇鋒敞鏄庡嚭澶勶細
浣滆咃細gogoplayer
E-mail : gogoplayer@163.com
QQ : 78939328
鏈枃妗g敱 鑷敱楠戝+絎冨織 緲昏瘧鏁寸悊,鐗堟潈灞炰簬OgreTeam銆傝漿杞借鍖呭惈鏈淇℃伅銆?/span>
榪欎釜宸ュ叿鍖呭寘鍚簡涓浜涘Ogre璧勬簮鏂囦歡榪涜鎿嶄綔鐨勯澶勭悊鍛戒護琛屽伐鍏楓?/span>
瀹冨寘鎷?/span>OgreXMLConveter, OgreMeshUpgrade, OgreMaterialUpgrade鍜?/span>MeshMagick銆?/span>
鎮ㄥ彲浠ュ湪榪欓噷鑾峰緱鍏?/span>WindowsV
.[OgreXMLConveter]
OgreXML杞崲鍣ㄨ兘澶熷皢 .mesh 妯″瀷緗戞牸鏂囦歡 鍜?/span> .skeleton 楠ㄩ鏂囦歡 鐢?/span>XML鏍煎紡杞崲涓轟簩榪涘埗鏍煎紡錛屽悓鏃跺彲浠ュ皢鍏朵簩榪涘埗鏍煎紡杞崲鍥?/span>XML鏍煎紡銆傚畠鍚屾椂涔熷厑璁鎬綘鍦ㄥ皢XML鏍煎紡杞崲涓轟簩榪涘埗鏍煎紡鏃惰緗?/span>LOD灞傜駭淇℃伅銆?/span>
濡傛灉浣犵殑Ogre鑴氭湰璧勬簮涓師鏈嬌鐢ㄧ殑灝辨槸XML鏍煎紡鏂囦歡鐨勮瘽錛岄偅涔堟湰宸ュ叿鍒欐槸Ogre榪愯鏃跺繀欏葷殑銆傛墍浠ヤ綘鑳藉鍦?/span>OgreSource鍖呯殑Tools/XMLConverter涓壘鍒板畠銆?/span>
浣跨敤鏂規硶錛?/span>
OgreXMLConverter 鎿嶄綔閫夐」 婧愭枃浠惰礬寰?/span> 鐩爣鏂囦歡璺緞
鏈夌敤鐨勬搷浣滈夐」鍖呮嫭錛?/font>
-i = 鎺у埗涓庡懡浠よ銆?/span>
-l nLODNum = 鎸囧畾鎬?/span>LOD灞傜駭 ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-d nLODDis = 鎸囧畾LOD灞傜駭闂寸殑璺濈澧炲箙 ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-p nLODPer = 鎸囧畾姣忎袱綰?/span>LOD灞備箣闂翠笁瑙掗潰鍑忓皯鐧懼垎姣?/span> ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-f nLODNum = 鎸囧畾涓ょ駭LOD灞備箣闂寸殑鍥哄畾欏剁偣鍑忓皯閲?/span> ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-e = 鍏抽棴妯$増闃村獎鐨?/span>edge琛?/span> ( 褰撲嬌鐢ㄦā鐗堥槾褰辨椂璇ラ」鎵嶆湁鏁?/span> )
-r = 鍏抽棴Ogre鎺ㄨ崘鐨勯《鐐圭紦鍐插尯鏍煎紡銆?/span>
-t = 涓烘硶綰胯創鍥劇敓鎴愬垏綰夸俊鎭?/span> ( 褰撲嬌鐢ㄦ硶綰胯創鍥炬椂璇ラ」鎵嶆湁鏁?/span> )
-o = 鍏抽棴鍐椾綑鍏抽敭妗㈠拰榪愬姩杞ㄨ抗鐨勫墧闄?/span>
-d3d = 浼樺厛浣跨敤D3D榪涜棰滆壊鏍煎紡鐨勫~鍏?/span> ( 鍦?/span>Windows騫沖彴涓粯璁よ欏瑰紑鍚?/span> )
-gl = 浼樺厛浣跨敤GL榪涜棰滆壊鏍煎紡鐨勫~鍏?/span> ( 鍦ㄩ潪Windows騫沖彴涓粯璁よ欏瑰紑鍚?/span> )
-E endian = 璁劇疆endian妯″紡錛屽彲浠ラ夋嫨big, little 鎴?/span> native ( 榛樿涓?/span>native )
-q = 杞婚噺妯″紡錛屽噺灝戣緭鍑恒?/span>
-log filename = Log鏂囦歡鍚嶇О銆傦紙榛樿涓?/span>OgreXMLConverter.log錛?/span>
.[OgreMeshUpgrade]
榪欎釜宸ュ叿鑳藉灝嗕綘鐨勪換浣曡佺増鏈殑 .mesh 鏂囦歡鏇存柊鍒板綋鍓嶇増鏈殑 .mesh 鏂囦歡銆?/span>
浣犲彲浠ュ湪Ogre.log鏂囦歡涓緱鍒?/span>.mesh鏂囦歡鐨勭増鏈俊鎭備竴鑸潵璇達紝Ogre鍙互榪愯鑰佺増鏈殑.mesh鏂囦歡錛屼絾鏄ц兘涓婁細鏈変竴浜涘樊鍒傚鏋滀綘鏇存柊浜?/span>Ogre鐨勫叾浠栭儴鍒嗭紝浣犲敖閲忓簲褰撳皢.mesh鏂囦歡鏇存柊涓哄悓鏍風殑鐗堟湰銆?/span>
浣跨敤鏂規硶錛?/span>
OgreMeshUpgrate 鎿嶄綔閫夐」 婧愭枃浠惰礬寰?/span> 鐩爣鏂囦歡璺緞
鏈夌敤鐨勬搷浣滈夐」鍖呮嫭錛?/font>
-i = 鎺у埗涓庡懡浠よ銆?/span>
-l nLODNum = 鎸囧畾鎬?/span>LOD灞傜駭 ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-d nLODDis = 鎸囧畾LOD灞傜駭闂寸殑璺濈澧炲箙 ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-p nLODPer = 鎸囧畾姣忎袱綰?/span>LOD灞備箣闂翠笁瑙掗潰鍑忓皯鐧懼垎姣?/span> ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-f nLODNum = 鎸囧畾涓ょ駭LOD灞備箣闂寸殑鍥哄畾欏剁偣鍑忓皯閲?/span> ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-e = 鍏抽棴妯$増闃村獎鐨?/span>edge琛?/span>
-r = 鍏抽棴Ogre鎺ㄨ崘鐨勯《鐐圭紦鍐插尯鏍煎紡銆?/span>
-t = 涓烘硶綰胯創鍥劇敓鎴愬垏綰夸俊鎭?/span>
-d3d = 杞崲涓?/span>D3D棰滆壊鏍煎紡
-gl = 杞崲涓?/span>GL棰滆壊鏍煎紡
-srcd3d = 鑰佺増鏈殑mesh鏂囦歡涓?/span>D3D棰滆壊鏍煎紡
-srcgl = 鑰佺増鏈殑mesh鏂囦歡涓?/span>GL棰滆壊鏍煎紡
-E endian = 璁劇疆endian妯″紡錛屽彲浠ラ夋嫨big, little 鎴?/span> native ( 榛樿涓?/span>native )
娉ㄦ剰錛?/span>
榪欎釜宸ュ叿鐜板湪鍏佽浣犺嚜瀹氫箟閲嶇粍浣犵殑mesh緗戞牸鏂囦歡鐨勯《鐐規牸寮忋?/span>
濡傛灉浣犳兂鏇存柊
榪欎釜宸ュ叿鑳藉灝嗕綘鐨勪換浣曡佺増鏈殑 .material 鏉愯川鏂囦歡鏇存柊鍒板綋鍓嶇増鏈殑 .material 鏉愯川鏂囦歡銆?/span>
鍊煎緱娉ㄦ剰鐨勬槸榪欎釜鑷姩鏇存柊鏄笉浼氬姞鍏ヤ竴浜涙柊鐨勮剼鏈娉曞姛鑳界殑錛岃繖涔堣浣犲彲鑳戒笉濂界悊瑙c傦紙渚嬪瓙錛?/span> “scene_blend add”榪欏彞鍙兘浼氳鏇存柊涓?/span>”scene_blend one one”錛屽洜涓?/span>”add”鐨勫簳灞傚疄闄呬笂灝辨槸”scene_blend one one”錛岃嚜鍔ㄦ洿鏂頒細灝嗕竴浜涢珮綰ц娉曟洿鏂頒負姣旇緝鐩存帴搴曞眰鐨勮娉曪級
鍙﹀錛岃繖涓伐鍏蜂粎瀵?/span>
浣跨敤鏂規硶錛?/span>
OgreMaterialUpgrade 婧愭枃浠惰礬寰?/span> 鐩爣鏂囦歡璺緞
Copyright 2007 by Daniel Wickert
榪欎釜宸ュ叿鏄mesh鏂囦歡鍜?/span>skeleton鏂囦歡榪涜涓浜涘鐞嗙殑宸ュ叿銆?/span>
澶ц嚧鍖呮嫭浠ヤ笅鍔熻兘錛?/font>
Info = 杈撳嚭mesh鐨勪俊鎭?/span>
Meshmerge = 灝嗗涓?/span>mesh鍚堝茍涓轟竴涓?/span>mesh鏂囦歡
rename = 閲嶅懡鍚?/span>mesh鍜?/span>skeleton鐨勪笉鍚屽厓浠?/span>
transform = 鏃嬭漿錛岀緝鏀句竴涓?/span>mesh
浣跨敤鏂瑰紡錛?/span>
MeshMagick –help=宸ュ叿鍚?/span> 鍙互鑾峰緱鏇村鐩稿叧淇℃伅銆?/span>
1錛氶櫎MeshMagick璇ュ伐鍏峰錛屽叾浠栦笁縐嶅伐鍏鳳紝浣跨敤鏂瑰紡閮藉彲浠ユ槸錛氬皢婧愯祫婧愭枃浠舵嫋鎷藉埌宸ュ叿鐨?/span>exe鍥炬爣涓娿傚洜涓烘洿鏂扮▼搴忎細灝嗘簮鏂囦歡瑕嗙洊錛屾墍浠ユ帹鑽愬仛涓嬪浠藉悗鍐嶆洿鏂般?/span>
2錛氭偍鍙互鍐欐壒澶勭悊鏂囦歡瀵瑰叾榪涜浣跨敤銆傛牸寮忓嵆涓轟笂闈㈢殑浣跨敤鏂瑰紡銆?/span>
涓句緥錛氭柊寤轟竴涓枃鏈枃浠?/span>test.txt
緙栬緫鍐呭涓?/span> OgreMeshUpgrate –d3d –l 4 –d 500 –p 30 E:\Ogre\Media\TestSrc.xml F:\Temp\TestDest.mesh
淇敼鏂囨湰鍚庣紑鍚嶄負test.bat
灝嗚鎵瑰鐞嗘枃浠朵笌OgreMeshUpgrate.exe鏀劇疆鍚屼竴鐩綍涓嬶紝榪愯
鍒欎細鑷姩灝?/span>E:\Ogre\Media\TestSrc.xml鏂囦歡杞崲涓?/span>F:\Temp\TestDest.mesh鏂囦歡錛屽悓鏃跺紑鍚簡4灞?/span>Lod錛?/span>Lod闂磋窛涓?/span>500璞$礌錛屾瘡涓綰ч棿闈㈡暟宸窛涓?/span>30%
3錛?/span>OgreMeshUpgrate宸ュ叿鎺ㄨ崘浣跨敤automatic鑷姩妯″紡欏剁偣鏍煎紡錛屾晥鐜囦細姣旇緝楂橈紝騫朵笖鐪佸幓涓嶅皯楹葷儲銆?/span>
4錛?/span>MeshMagick宸ュ叿涓嶆帹鑽愪嬌鐢ㄣ傛湰韜姛鑳芥湁闄愶紝鑰屼笖闀挎湡鏃犱漢緇存姢錛屽鏂扮殑mesh鏀寔涓嶅ソ銆?/span>
鍘熷垱 闊╀婦
http://www.hjpdiy.com
Ogre閲囩敤鏍戞々綆$悊鍦烘櫙涓殑鍚勭"鍏冪礌"(鎽勫儚鏈恒佺伅鍏夈佺墿浣撶瓑)錛屾墍鏈夌殑涓滆タ閮芥寕鍦?鏍?涓婏紝涓嶅湪"鏍?涓婄殑涓滆タ涓嶄細琚覆鏌撱?br> Ogre::SceneManager灝辨槸"鏍?鐨勭鐞嗚咃紝Ogre::SceneNode鏄粠SceneManager涓垱寤虹殑錛堝綋鐒禕SP鍜?*鏍戠殑綆$悊涔熷拰榪欎袱涓被鏈夊叧錛岃繖鏆傛椂涓嶈璁猴級銆?/p>
AABB(杞村榻愬寘鍥寸洅)
榪欎釜涓滆タ鏄鎾炴嫻嬬殑鍩虹錛堟庝箞鎬繪兂璧稪JYY鍛級錛屽拰瀹冪被浼肩殑榪樻湁OBB(鏈夊悜鍖呭洿鐩?錛岀敱浜嶰BB鍒涘緩澶嶆潅錛屾墍浠gre閲囩敤浜咥ABB銆?/p>
鏈綆鍗曠殑紕版挒媯嫻嬶細
閫?br>
榪嘜gre::SceneNode::_getWorldAABB()鍙互鍙栧緱榪欎釜鍙跺瓙鑺傜偣鐨凙ABB(Ogre::AxisAlignedBox)錛?br>
Ogre::AxisAlignedBox灝佽浜嗗AABB鐨勬敮鎸侊紝璇ョ被鐨勬垚鍛樺嚱鏁癘gre::AxisAlignedBox::intersects
()鍙互鍒ゆ柇涓涓狝ABB鍜?鐞冧綋銆佺偣銆侀潰浠ュ強鍏朵粬闈?鐨勭浉浜ゆ儏鍐碉紙紕版挒鎯呭喌錛夈?/p>
m_SphereNode鏍戠殑鍙跺瓙錛屾寕浜嗕竴涓?鐞?
m_CubeNode鏍戠殑鍙跺瓙錛屾寕浜嗕竴涓?姝f柟浣?
AxisAlignedBox spbox=m_SphereNode->_getWorldAABB();
AxisAlignedBox cbbox=m_CubeNode->_getWorldAABB();
if(spbox.intersects(cbbox))
{
//鐩鎬氦
}
鍖哄煙鏌ヨ錛?/p>
綆鍗曠殑璁插氨鏄紝鏌ヨ鏌愪竴鍖哄煙涓湁浠涔堜笢瑗匡紝鍒嗕負AABB銆佺悆浣撱侀潰鏌ヨ銆?/p>
//鍒涘緩涓涓悆浣撴煡璇紝榪欓噷鐨?00鏄痬_SphereNode鎸傜潃鐨勯偅涓悆浣撶殑鍗婂緞
SphereSceneQuery * pQuery=m_SceneMgr->createSphereQuery(Sphere(m_SphereNode->getPosition(),100));
//鎵ц榪欎釜鏌ヨ
SceneQueryResult QResult=pQuery->execute();
//閬嶅巻鏌ヨ鍒楄〃鎵懼嚭鑼冨洿鍐呯殑鐗╀綋
for (std::list<MovableObject*>::iterator iter = QResult.movables.begin(); iter != QResult.movables.end();++iter)
{
MovableObject* pObject=static_cast<MovableObject*>(*iter);
if(pObject)
{
if(pObject->getMovableType()=="Entity")
{
Entity* ent = static_cast<Entity*>(pObject);
//榪欓噷綆鍖栦簡鎿嶄綔錛岀敱浜庡彧鏈変竴涓?鐞冧綋"鍜屼竴涓?姝f柟浣?錛?br>
//鎵浠ュ彧鍒ゆ柇浜嗙悆浣撳拰姝f柟浣撶殑鐩鎬氦
if(ent->getName()=="cube")
{
//鏀瑰彉浣嶇疆闃叉鐗╀綋閲嶅彔
vtl=-vtl;
m_SphereNode->translate(vtl);
break;
}
}
}
}
鐩鎬氦鏌ヨ
閬嶅巻鎵鏈夌殑瀵硅薄錛屾壘鍒頒竴瀵逛竴瀵圭殑鐩鎬氦鐗╀綋錛堝簾璇濆憖錛岀浉浜ゅ綋鐒惰嚦灝戜袱涓墿浣擄級銆?/p>
//鍒涘緩鐩鎬氦媯嫻?br>
IntersectionSceneQuery* pISQuery=m_SceneMgr->createIntersectionQuery();
//鎵ц鏌ヨ
IntersectionSceneQueryResult QResult=pISQuery->execute();
//閬嶅巻鏌ヨ鍒楄〃鎵懼嚭涓や釜鐩鎬氦鐨勭墿浣?br>
for (SceneQueryMovableIntersectionList::iterator iter = QResult.movables2movables.begin();
iter != QResult.movables2movables.end();++iter)
{
SceneQueryMovableObjectPair pObject=static_cast<SceneQueryMovableObjectPair>(*iter);
//if(pObject)
{
String strFirst=pObject.first->getName();
String strSecond=pObject.second->getName();
//涓嬮潰鍔犲叆浣犺嚜宸辯殑涓や釜鐗╀綋鐩鎬氦鍒ゆ柇浠g爜錛屾垨鑰呯畝鍗曠殑鐢ˋABB鐨勫垽鏂柟娉曪紝
}
}
p={0,x0,y0,z0}
q= {cos(α/ 2) , sina(α/ 2) Nx, sin(α/ 2)Ny, sin(α/ 2)Nz } (N涓哄崟浣嶅悜閲?
p緇撴灉 =q*p*q-1
鍦ㄦ暟瀛︿笂錛?span>quaternion琛ㄧず澶嶆暟w+xi+yj+zk錛屽叾涓?/span>i,j,k閮芥槸铏氭暟鍗曚綅,鑰屽鏁頒箻娉?span>(鍙変箻)鐨勫嚑浣曟剰涔夊疄闄呬笂灝辨槸瀵瑰鏁拌繘琛屾棆杞傝繖涔熸槸OGRE涓轟粈涔堣鐢╭uaternion鐨勫師鍥?姣擬atrix鏇村揩鎹鋒洿鑺傜渷絀洪棿),瀵規渶綆鍗曠殑浜岀淮澶嶆暟p= x + yi鏉ヨ錛屽拰鍙︿竴涓?/span>q = ( conα錛?/span>sinα)鐩鎬箻錛屽垯琛ㄧず鎶?/span>p娌塊嗘椂閽堟柟鍚戞棆杞?#945;錛?/span>p’ = pq ,榪欐槸2D鏃嬭漿.
濡傛灉瑕佽〃紺?D鏃嬭漿,灝遍渶瑕?D澶嶆暟浜?浜庢槸灝辨湁浜?鍥涘厓鏁?,q=w+ix+jy+kz (i,j,k閮芥槸铏氭暟)
鍏朵腑j,j,k鍏崇郴濡備笅:
i2 = j2 = k2 = -1
i * j = k = -j * i
j * k = i = -k * j
k * i = j = -i * k
鍥涘厓鏁板姞娉?
q1 + q2 = (w1+w2) + (x1+x2) i + (y1+y2) j + (z1+z2) k
鍥涘厓鏁頒箻娉?
q1 * q2 =
(w1*w2 - x1*x2 - y1*y2 - z1*z2) +
(w1*x2 + x1*w2 + y1*z2 - z1*y2) i +
(w1*y2 - x1*z2 + y1*w2 + z1*x1) j +
(w1*z2 + x1*y2 - y1*x2 + z1*w2) k
OGRE婧愪唬鐮侀噷榪欐牱瀹氫箟涔樻硶:
Quaternion Quaternion::operator* (const Quaternion& rkQ) const
{
// cases p*q != q*p.
return Quaternion
(
w * rkQ.w - x * rkQ.x - y * rkQ.y - z * rkQ.z,
w * rkQ.x + x * rkQ.w + y * rkQ.z - z * rkQ.y,
w * rkQ.y + y * rkQ.w + z * rkQ.x - x * rkQ.z,
w * rkQ.z + z * rkQ.w + x * rkQ.y - y * rkQ.x
);
}
鐩綍[闅愯棌] |
鏈唬鐮佷負Win32騫沖彴涓奜GRE 3D鍥懼艦寮曟搸鍚勭増鏈腑鏂囪緭鍏ユ墍浣跨敤銆備唬鐮佷腑鍙兘瀛樺湪涓嶅畬鍠勭殑鍦版柟錛屽鏈夐棶棰樺彲浠ュ埌璁哄潧浜ゆ祦銆?
涓嬭澆榪炴帴錛坒or OGRE 3D 1.4.0RC1 錛?
涓嬭澆榪炴帴錛坒or OGRE 3D 1.2.5錛?
<?xml version="1.0" ?><Font Name="simfang" Filename="simfang.ttf" Type="FreeType" Size="10" NativeHorzRes="800" NativeVertRes="600" AutoScaled="true" />
<Font Name="BlueHighway-8" Filename="bluehighway-8.font" />
<Font Name="simfang" Filename="simfong.font" />
…………
//mSystem->setDefaultFont((CEGUI::utf8*)"BlueHighway-12");
mSystem->setDefaultFont((CEGUI::utf8*)"simfang");//SimHei-12
…………
//quit->setText((CEGUI::utf8*)"Quit");
quit->setText((CEGUI::utf8*)Ogre::UTFString(L"涓枃閫鍑?/span>").asUTF8_c_str());
…………
緙栬瘧榪愯銆傚氨OK浜嗐?/p>
quit->setText((CEGUI::utf8*)Ogre::UTFString(L"涓枃閫鍑?/span>").asUTF8_c_str());鍏充簬layout鏂囦歡:
<?xml version="1.0" ?>
<GUILayout>
<Window Type="DefaultWindow" Name="Tutorial Gui">
<Window Type="TaharezLook/Button" Name="Quit">
<Property Name="UnifiedPosition" Value="{{0.35,0},{0.45,0}}" />
<Property Name="UnifiedSize" Value="{{0.3,0},{0.1,0}}" />
<Property Name="Text" Value="閫鍑? />
</Window>
</Window>
</GUILayout>
涓寮濮嬫垜鍙槸綆鍗曠殑鎶婇厤緗枃浠朵腑鐨?Quit"鏀逛簡"閫鍑?,緇撴灉榪愯灝辨姤閿欎簡, LOG鏂囦歡鏄劇ず鏄?
| Exception: ExpatParser::parseXMLFile - XML Parsing error 'not well-formed (invalid token)' at line 7 |
鏌ヤ簡鏌? 鍘熸潵鏂囦歡鏍煎紡涔熻鏀規垚UTF-8鏍煎紡鐨?鍛靛懙
鏈枃妗g敱 鑷敱楠戝+絎冨織 緲昏瘧鏁寸悊,鐗堟潈灞炰簬OgreTeam銆傝漿杞借鍖呭惈鏈淇℃伅銆?/span>
榪欎釜宸ュ叿鍖呭寘鍚簡涓浜涘Ogre璧勬簮鏂囦歡榪涜鎿嶄綔鐨勯澶勭悊鍛戒護琛屽伐鍏楓?/span>
瀹冨寘鎷?/span>OgreXMLConveter, OgreMeshUpgrade, OgreMaterialUpgrade鍜?/span>MeshMagick銆?/span>
鎮ㄥ彲浠ュ湪榪欓噷鑾峰緱鍏?/span>WindowsV
.[OgreXMLConveter]
OgreXML杞崲鍣ㄨ兘澶熷皢 .mesh 妯″瀷緗戞牸鏂囦歡 鍜?/span> .skeleton 楠ㄩ鏂囦歡 鐢?/span>XML鏍煎紡杞崲涓轟簩榪涘埗鏍煎紡錛屽悓鏃跺彲浠ュ皢鍏朵簩榪涘埗鏍煎紡杞崲鍥?/span>XML鏍煎紡銆傚畠鍚屾椂涔熷厑璁鎬綘鍦ㄥ皢XML鏍煎紡杞崲涓轟簩榪涘埗鏍煎紡鏃惰緗?/span>LOD灞傜駭淇℃伅銆?/span>
濡傛灉浣犵殑Ogre鑴氭湰璧勬簮涓師鏈嬌鐢ㄧ殑灝辨槸XML鏍煎紡鏂囦歡鐨勮瘽錛岄偅涔堟湰宸ュ叿鍒欐槸Ogre榪愯鏃跺繀欏葷殑銆傛墍浠ヤ綘鑳藉鍦?/span>OgreSource鍖呯殑Tools/XMLConverter涓壘鍒板畠銆?/span>
浣跨敤鏂規硶錛?/span>
OgreXMLConverter 鎿嶄綔閫夐」 婧愭枃浠惰礬寰?/span> 鐩爣鏂囦歡璺緞
鏈夌敤鐨勬搷浣滈夐」鍖呮嫭錛?/font>
-i = 鎺у埗涓庡懡浠よ銆?/span>
-l nLODNum = 鎸囧畾鎬?/span>LOD灞傜駭 ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-d nLODDis = 鎸囧畾LOD灞傜駭闂寸殑璺濈澧炲箙 ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-p nLODPer = 鎸囧畾姣忎袱綰?/span>LOD灞備箣闂翠笁瑙掗潰鍑忓皯鐧懼垎姣?/span> ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-f nLODNum = 鎸囧畾涓ょ駭LOD灞備箣闂寸殑鍥哄畾欏剁偣鍑忓皯閲?/span> ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-e = 鍏抽棴妯$増闃村獎鐨?/span>edge琛?/span> ( 褰撲嬌鐢ㄦā鐗堥槾褰辨椂璇ラ」鎵嶆湁鏁?/span> )
-r = 鍏抽棴Ogre鎺ㄨ崘鐨勯《鐐圭紦鍐插尯鏍煎紡銆?/span>
-t = 涓烘硶綰胯創鍥劇敓鎴愬垏綰夸俊鎭?/span> ( 褰撲嬌鐢ㄦ硶綰胯創鍥炬椂璇ラ」鎵嶆湁鏁?/span> )
-o = 鍏抽棴鍐椾綑鍏抽敭妗㈠拰榪愬姩杞ㄨ抗鐨勫墧闄?/span>
-d3d = 浼樺厛浣跨敤D3D榪涜棰滆壊鏍煎紡鐨勫~鍏?/span> ( 鍦?/span>Windows騫沖彴涓粯璁よ欏瑰紑鍚?/span> )
-gl = 浼樺厛浣跨敤GL榪涜棰滆壊鏍煎紡鐨勫~鍏?/span> ( 鍦ㄩ潪Windows騫沖彴涓粯璁よ欏瑰紑鍚?/span> )
-E endian = 璁劇疆endian妯″紡錛屽彲浠ラ夋嫨big, little 鎴?/span> native ( 榛樿涓?/span>native )
-q = 杞婚噺妯″紡錛屽噺灝戣緭鍑恒?/span>
-log filename = Log鏂囦歡鍚嶇О銆傦紙榛樿涓?/span>OgreXMLConverter.log錛?/span>
.[OgreMeshUpgrade]
榪欎釜宸ュ叿鑳藉灝嗕綘鐨勪換浣曡佺増鏈殑 .mesh 鏂囦歡鏇存柊鍒板綋鍓嶇増鏈殑 .mesh 鏂囦歡銆?/span>
浣犲彲浠ュ湪Ogre.log鏂囦歡涓緱鍒?/span>.mesh鏂囦歡鐨勭増鏈俊鎭備竴鑸潵璇達紝Ogre鍙互榪愯鑰佺増鏈殑.mesh鏂囦歡錛屼絾鏄ц兘涓婁細鏈変竴浜涘樊鍒傚鏋滀綘鏇存柊浜?/span>Ogre鐨勫叾浠栭儴鍒嗭紝浣犲敖閲忓簲褰撳皢.mesh鏂囦歡鏇存柊涓哄悓鏍風殑鐗堟湰銆?/span>
浣跨敤鏂規硶錛?/span>
OgreMeshUpgrate 鎿嶄綔閫夐」 婧愭枃浠惰礬寰?/span> 鐩爣鏂囦歡璺緞
鏈夌敤鐨勬搷浣滈夐」鍖呮嫭錛?/font>
-i = 鎺у埗涓庡懡浠よ銆?/span>
-l nLODNum = 鎸囧畾鎬?/span>LOD灞傜駭 ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-d nLODDis = 鎸囧畾LOD灞傜駭闂寸殑璺濈澧炲箙 ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-p nLODPer = 鎸囧畾姣忎袱綰?/span>LOD灞備箣闂翠笁瑙掗潰鍑忓皯鐧懼垎姣?/span> ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-f nLODNum = 鎸囧畾涓ょ駭LOD灞備箣闂寸殑鍥哄畾欏剁偣鍑忓皯閲?/span> ( 璇ラ」浠呭湪XML鏍煎紡杞崲涓?/span>Mesh鏍煎紡鏃舵湁鏁?/span> )
-e = 鍏抽棴妯$増闃村獎鐨?/span>edge琛?/span>
-r = 鍏抽棴Ogre鎺ㄨ崘鐨勯《鐐圭紦鍐插尯鏍煎紡銆?/span>
-t = 涓烘硶綰胯創鍥劇敓鎴愬垏綰夸俊鎭?/span>
-d3d = 杞崲涓?/span>D3D棰滆壊鏍煎紡
-gl = 杞崲涓?/span>GL棰滆壊鏍煎紡
-srcd3d = 鑰佺増鏈殑mesh鏂囦歡涓?/span>D3D棰滆壊鏍煎紡
-srcgl = 鑰佺増鏈殑mesh鏂囦歡涓?/span>GL棰滆壊鏍煎紡
-E endian = 璁劇疆endian妯″紡錛屽彲浠ラ夋嫨big, little 鎴?/span> native ( 榛樿涓?/span>native )
娉ㄦ剰錛?/span>
榪欎釜宸ュ叿鐜板湪鍏佽浣犺嚜瀹氫箟閲嶇粍浣犵殑mesh緗戞牸鏂囦歡鐨勯《鐐規牸寮忋?/span>
濡傛灉浣犳兂鏇存柊
榪欎釜宸ュ叿鑳藉灝嗕綘鐨勪換浣曡佺増鏈殑 .material 鏉愯川鏂囦歡鏇存柊鍒板綋鍓嶇増鏈殑 .material 鏉愯川鏂囦歡銆?/span>
鍊煎緱娉ㄦ剰鐨勬槸榪欎釜鑷姩鏇存柊鏄笉浼氬姞鍏ヤ竴浜涙柊鐨勮剼鏈娉曞姛鑳界殑錛岃繖涔堣浣犲彲鑳戒笉濂界悊瑙c傦紙渚嬪瓙錛?/span> “scene_blend add”榪欏彞鍙兘浼氳鏇存柊涓?/span>”scene_blend one one”錛屽洜涓?/span>”add”鐨勫簳灞傚疄闄呬笂灝辨槸”scene_blend one one”錛岃嚜鍔ㄦ洿鏂頒細灝嗕竴浜涢珮綰ц娉曟洿鏂頒負姣旇緝鐩存帴搴曞眰鐨勮娉曪級
鍙﹀錛岃繖涓伐鍏蜂粎瀵?/span>
浣跨敤鏂規硶錛?/span>
OgreMaterialUpgrade 婧愭枃浠惰礬寰?/span> 鐩爣鏂囦歡璺緞
Copyright 2007 by Daniel Wickert
榪欎釜宸ュ叿鏄mesh鏂囦歡鍜?/span>skeleton鏂囦歡榪涜涓浜涘鐞嗙殑宸ュ叿銆?/span>
澶ц嚧鍖呮嫭浠ヤ笅鍔熻兘錛?/font>
Info = 杈撳嚭mesh鐨勪俊鎭?/span>
Meshmerge = 灝嗗涓?/span>mesh鍚堝茍涓轟竴涓?/span>mesh鏂囦歡
rename = 閲嶅懡鍚?/span>mesh鍜?/span>skeleton鐨勪笉鍚屽厓浠?/span>
transform = 鏃嬭漿錛岀緝鏀句竴涓?/span>mesh
浣跨敤鏂瑰紡錛?/span>
MeshMagick –help=宸ュ叿鍚?/span> 鍙互鑾峰緱鏇村鐩稿叧淇℃伅銆?/span>
1錛氶櫎MeshMagick璇ュ伐鍏峰錛屽叾浠栦笁縐嶅伐鍏鳳紝浣跨敤鏂瑰紡閮藉彲浠ユ槸錛氬皢婧愯祫婧愭枃浠舵嫋鎷藉埌宸ュ叿鐨?/span>exe鍥炬爣涓娿傚洜涓烘洿鏂扮▼搴忎細灝嗘簮鏂囦歡瑕嗙洊錛屾墍浠ユ帹鑽愬仛涓嬪浠藉悗鍐嶆洿鏂般?/span>
2錛氭偍鍙互鍐欐壒澶勭悊鏂囦歡瀵瑰叾榪涜浣跨敤銆傛牸寮忓嵆涓轟笂闈㈢殑浣跨敤鏂瑰紡銆?/span>
涓句緥錛氭柊寤轟竴涓枃鏈枃浠?/span>test.txt
緙栬緫鍐呭涓?/span> OgreMeshUpgrate –d3d –l 4 –d 500 –p 30 E:\Ogre\Media\TestSrc.xml F:\Temp\TestDest.mesh
淇敼鏂囨湰鍚庣紑鍚嶄負test.bat
灝嗚鎵瑰鐞嗘枃浠朵笌OgreMeshUpgrate.exe鏀劇疆鍚屼竴鐩綍涓嬶紝榪愯
鍒欎細鑷姩灝?/span>E:\Ogre\Media\TestSrc.xml鏂囦歡杞崲涓?/span>F:\Temp\TestDest.mesh鏂囦歡錛屽悓鏃跺紑鍚簡4灞?/span>Lod錛?/span>Lod闂磋窛涓?/span>500璞$礌錛屾瘡涓綰ч棿闈㈡暟宸窛涓?/span>30%
3錛?/span>OgreMeshUpgrate宸ュ叿鎺ㄨ崘浣跨敤automatic鑷姩妯″紡欏剁偣鏍煎紡錛屾晥鐜囦細姣旇緝楂橈紝騫朵笖鐪佸幓涓嶅皯楹葷儲銆?/span>
4錛?/span>MeshMagick宸ュ叿涓嶆帹鑽愪嬌鐢ㄣ傛湰韜姛鑳芥湁闄愶紝鑰屼笖闀挎湡鏃犱漢緇存姢錛屽鏂扮殑mesh鏀寔涓嶅ソ銆?/span>
娓告垙涓昏鐢ㄥ埌浜嗗嚑涓紩鎿庯紝鐗╃悊寮曟搸錛圥hysicsX SDK
妯″瀷鐨勫鍑?/strong>
OGRE鏈夎嚜宸辯殑3D妯″瀷鏍煎紡錛?mesh鏍煎紡錛夈傚鍑哄彲浠ョ洿鎺ュ嚭OGRE瀹樻柟緗戠珯涓嬭澆瀵煎嚭鎻掍歡銆備笉榪囧鍑烘彃浠舵湁濂戒簺Bug銆傚浜庡緩妯℃柟寮忕殑涓嶅悓瀵煎嚭涔熶笉鍚岋紝Maya鐨勫鍑烘彃浠朵笉鑳藉鍑洪潪灝侀棴鐨勬洸闈紝鑰?dsMax鍙互錛屾墍浠ュ彲浠ラ氳繃瀹冨鎴?mesh銆?/p>
鍙﹀錛屽湪鐗╃悊寮曟搸涓琛ㄧ幇綺劇‘鐨勭鎾烇紝鏈濂借兘寰楀埌妯″瀷鐨勭綉鏍肩粨鏋勶紝鍗蟲ā鍨嬬殑鐐歸潰淇℃伅錛岃屼笉鏄敤綆鍗曠殑瑙勫垯褰㈠紡鏉ュ寘瑁廣傛垜浠殑娓告垙涓湴鍥劇敤鐨勬槸鍓嶈咃紝鑰岃濺杈嗛亾鍏風瓑鐢ㄧ殑鏄悗鑰呫?/p>
浣哖hysicsX騫朵笉鏀寔.mesh銆傛墍浠ユ垜浠槸閫氳繃瀵煎嚭鎻掍歡瀵煎嚭鐨?mesh.xml鏍煎紡鏂囦歡涓鍙栫偣闈俊鎭紙浠呮錛夛紝鍐嶅啓鍒拌嚜瀹氫箟鐨勪簩榪涘埗鏂囦歡鏍煎紡涓紝涓虹墿鐞嗗紩鎿庝嬌鐢ㄣ?/p>
OGRE涓?/strong>PhysicsX涔嬮棿鐨勮﹀悎
PhysicsX鍜孫GRE鍦烘櫙綆$悊姣旇緝綾諱技錛岄兘鏈夊搴旂殑綾匯備竴涓彲浠ョЩ鍔ㄧ殑鐗╀綋錛屽湪OGRE涓彲浠ョ敤SceneNode瀹炵幇錛屽茍鍔犲叆鍒板満鏅鐞? 涓紝鍦≒hysicsX涓垯鍙互鐢∟xActor瀵瑰簲銆侼xActor涓璓hysicsX涓殑涓涓墿鐞嗗崟浣嶏紝瀹冨彲浠ユ妸涓涓墿浣撶敤綆鍗曠殑鍑犱釜瑙勫垯鍑犱綍褰㈢姸鍖? 瑁硅搗鏉ワ紝鎵浠ョ殑閲嶅姏銆佺鎾炵瓑鐗╃悊浣滅敤閮戒綔鐢ㄥ湪NxActor涓紝騫朵駭鐢熺浉搴旂殑鐗╃悊鍙嶅簲銆傚緱鍒扮浉搴旂殑鐗╃悊鏁版嵁涔嬪悗錛屽啀閫氳繃璁劇疆SceneNode鐩稿簲灞炴э紝 灝卞彲浠ュ疄鐜伴肩湡鐨勭墿鐞嗘晥鏋溿?/p>
浜嬪疄涓婏紝鍦板浘鍦烘櫙涔熸槸浣滀負鏅氱殑3D鐗╀綋鏉ュ疄鐜般?/p>
鑰孫GRE涓嶱hysicsX涔嬮棿鐨勬槧灝勫茍涓嶆槸瀵逛簬姣忎竴涓墿浣撹繘琛屾槧灝勫皝瑁呭疄鐜般傝屾槸鎶婅繖涓ら儴鍒嗗皝瑁呮垚鐙珛鐨勪袱涓ā鍧楋紝浣嗚繖涓ら儴鍒嗕腑鎵鏈夌殑鐗╀綋閮芥槸 涓涓瀵瑰簲鐨勩傚湪涓葷▼搴忎腑錛屽啀鎶婁粠PhysicsX閮ㄥ垎璁$畻鍑虹殑緇撴灉錛屼紶閫掔粰OGRE閮ㄥ垎錛岃繘琛岀粯鍒躲傝繖鏍蜂篃涓虹綉緇滅殑鍔犲叆鎻愪緵浜嗗ソ鐨勫祵鍏ョ偣銆傚洜涓哄彧瑕佹湇鍔$ 榪涜鍏ㄩ儴鐗╃悊榪愮畻錛屽啀鎶婅繍綆楃殑緇撴灉鍙戠粰瀹㈡埛绔疧GRE榪涜娓叉煋銆?/p>
OGRE涓殑frameStated(const FrameEvent &evt)浣滀負紼嬪簭鐨勪富綰跨▼錛屽湪鍏朵腑璋冪敤
m_NxScene->simulate(evt.timeSinceLastFrame); // m_NxScene, instance of (NxScene*)
m_NxScene->flushStream();
m_NxScene->fetchResults(NX_RIGID_BODY_FINISHED);
鍐嶆妸榪愮畻鐨勭墿鐞嗙粨鏋滅粰OGRE緇樺埗銆?/p>
榪欐牱OGRE涓嶱hysicsX緇撳悎鍦ㄤ竴璧鳳紝鑰屼袱鑰呯殑鍐呴儴瀹炵幇鏄簰涓嶅獎鍝嶇殑錛屽彲浠ョ嫭绔嬬紪紼嬶紝鍙澶勭悊濂戒袱鑰呯墿浣撶殑涓涓瀵瑰簲鍏崇郴銆?/p>
鍦板浘鍦烘櫙鐨勫疄鐜?/strong>
瀵逛簬OGRE鏉ヨ鏈変笓闂ㄧ殑瀹ゅ鍦板浘鍦烘櫙綆$悊銆備絾鏄敱浜庡叾楂樺害鍥懼緢闅懼鍏ュ埌PhysicsX涓紝闄ら潪閫氳繃寤烘ā鏃跺緱鍒扮偣闈俊鎭紝浣嗗湪鍏蜂綋鎿嶄綔涓緢闅懼仛鍒? 楂樺害鍥句笌緗戞牸鐐歸潰淇℃伅鐨勪竴鑷淬傛垜浠繕璇曡繃鍦ㄧ▼搴忓垵濮嬪寲鏃墮氳繃OGRE鐨凴ay鍙栧緱鍦板浘涓奙*N涓偣鐨勫潗鏍囷紝緇勬垚2*M*N涓笁瑙掑艦闈㈢墖錛屼嬌鐢ㄥ埌鐗╃悊寮曟搸 涓紝榪戜技鐨勫疄鐜扮墿鐞嗗湴鍥俱備絾榪欑瀹炵幇鎵鏈夌殑涓夎褰㈠湪XZ騫抽潰涓婄殑鎶曞獎閮芥槸涓鏍風殑錛岄潰鐗囧お灝戝彲鑳戒笉綺劇‘錛屽お澶氬張浼氬鍔犱笉蹇呰鐨勫紑閿錛屾葷殑鏉ヨ涓嶅鐞嗘兂銆?/p>
PhysicsX涓篃鏈変笓闂ㄧ敤浜庡鐞嗗湴鍥懼満鏅殑NxActor錛屽彲浠ュ湪鍒涘緩NxActor鍓嶉氳繃
terrainDesc.heightFieldVerticalAxis = NX_Y; // terrainDesc is a NxTriangleMeshDes
// Default: NX_NOT_HEIGHTFIELD
terrainDesc.heightFieldVerticalExtent =
榪涜璁劇疆銆傝繖鏍峰彲浠ュぇ澶х殑鎻愰珮鏁堢巼銆傝繖鏈潵搴旇鏄竴涓悊鎯崇殑鍋氭硶銆備絾鐢變簬鎴戜滑寤烘ā鏃舵ā鍨嬪鍑烘湁浜涜宸殑鍘熷洜錛屼細鍑虹幇鏌愪簺闈㈢墖涓哄瀭鐩達紝鐗╃悊紕版挒鐨勬晥鏋? 鍦ㄨ繖浜涘湴鏂硅繃浜庢縺鐑堬紝琛ㄧ幇鍦ㄥ睆騫曚笂灝辨槸杞︿細紿佺劧琚挒寰楅璧鋒潵寰堥珮銆傛垜浠瘯浜嗗緢涔呴兘娌℃壘鍒板悎閫傜殑妯″瀷瀵煎嚭鏂規硶閬垮厤榪欎竴鐜拌薄銆傛墍浠ュ彧鏈夋墍鍦板浘鍦烘櫙涔熶綔涓轟竴涓櫘 閫氱殑NxActor榪涜澶勭悊錛岃繖鏍鳳紝铏界劧鍏嬫湇涓嶄簡寤烘ā瀵煎嚭鏃剁殑榪欎釜闂錛屼絾涔熶笉鏄撹鐜╁鍙戣銆?/p>
榪欐牱錛屽湴鍥懼満鏅氨鏈変簡瀹炵幇鐨勬柟娉曚簡錛氬湪OGRE涓綔涓烘櫘閫氱殑.mesh瀵瑰緟錛屽垱寤篠ceneNode鍜孍ntity錛涘湪PhysicsX涓紝浣滀負鏅氱殑NxActor瀵瑰緟錛屽彧鏄敤NxCooking榪涜澶勭悊錛屽叿浣撴病鍘葷粏絀訛紝鍙兘鏄負浜嗘彁楂樻ц兘銆?/p>
杞﹁締鐨勫疄鐜?/strong>
杞﹁締鐨勫疄鐜版槸鏈父鎴忕殑閲嶇偣銆?/p>
褰撶劧涔熷垎OGRE鍜孭hysicsX涓ら儴鍒嗗疄鐜般?/p>
OGRE閮ㄥ垎榪樺寘鎷瑙掑嵆錛圕amera錛夛紝鑰屽叾浠栬濡傛補閲忥紝閬撳叿涔嬬被鐨勪笌杞﹁締鏈韓鏃犲叧鐨勮繖閲屼笉鍋氭弿榪般備竴杈嗚濺鐨勪富瑕佺粨鏋勫涓嬶細
![杞﹁締緇撴瀯鍥?></p>
<p>瀵逛簬涓杈嗚濺鐨勫緩妯★紝榪欓噷榪樻槸姣旇緝綺楃硻錛屽彧鏄垎涓鴻濺杞拰杞︿綋錛屾妸杞﹁疆鍒嗙鍑烘潵涓昏鏄疄鐜拌疆瀛愮殑杞悜鏁堟灉銆?/p>
<p>鐢變簬鏈父鎴忕殑鍒濊》鏄疄鐜板浜哄鎴樼殑緗戠粶娓告垙錛屽彧鏄埌鏈鍚庢病鑳藉疄鐜扮綉緇滐紝鏀逛負鍗曟満銆備絾鎵浠ョ殑灝佽閮芥槸涓哄浜虹綉緇滄父鎴忓噯澶囩殑銆?/p>
<p>鎵鏈夎濺浼氱敱涓涓被榪涜緇熶竴綆$悊錛岃岃繖涓被鐢ㄤ簡Singleton璁捐妯″紡銆傚湪鍏朵笂鏈夊彟涓涓皝瑁匫GRE鍦烘櫙鍜岃濺杈嗙殑鎬葷被銆?/p>
<p>PhysicsX閮ㄥ垎錛岃濺浣撶敱鍗佸嚑綆鍗曠殑闈㈢墖榪涜鍖呰9錛岃岃濺杞槸鍏抽敭銆?/p>
<p>杞﹁締閫氳繃鏋勯犺疆瀛愮殑灞傛緇撴瀯瀹炵幇錛岃濺鐢辮濺浣撳拰鍥涗釜杞﹁疆緇勬垚錛屽疄鐜拌繍鍔ㄤ富瑕佺敱杞﹁疆鎺у埗銆?/p>
<p>鎵鏈夎濺杈嗗彲鎺х殑榪愬姩錛堟瘮濡傜鎾炰負涓嶅彲鎺э級閮界敱杞﹁疆甯﹀姩銆傝繖涔熺鍚堝疄鐜扮殑鐗╃悊銆?/p>
<p>杞﹁疆鐨勫疄鐜頒富瑕佹槸閫氳繃NxWheelShape瀹炵幇銆備笅闈㈡槸閮ㄥ垎瀵筃xWheelShape鐨勫垎鏋愩?/p>
<p>NxWheelShape灞炴э細</p>
<p>radius錛歊ange: (0,inf) 杞﹁疆鍗婂緞</p>
<p>suspensionTravel錛歊ange: [0,inf)錛宻uspension鐨勪綔鐢ㄨ窛紱?/p>
<p>virtual void setLongitudalTireForceFunction (NxTireFunctionDesc tireFunc)=0</p>
<p>璁懼畾鍔ㄥ姏瀵規鍚戠殑鍔犻熷害絳夌殑褰卞搷</p>
<p>virtual void setLateralTireForceFunction (NxTireFunctionDesc tireFunc)</p>
<p>璁懼畾鍔ㄥ姏瀵逛晶鍚戠殑鍔犻熷害絳夌殑褰卞搷錛屽彲浠ュ疄鐜頒晶婊戜箣綾葷殑</p>
<p>axleSpeed錛歊ange: (-inf,inf)</p>
<p>NOTE: NX_WF_AXLE_SPEED_OVERRIDE flag must be raised for this to have effect</p>
<p>An overridden axle speed of course renders the axle motor and brake torques ineffective</p>
<p>鐢╯etAxleSpeed鏃訛紝鐩存帴璁懼畾閫熷害錛岃繖縐嶆ā寮忎笉鍐嶅彈motorTorque鍜宐rakeTorque絳夊獎鍝?/p>
<p>brakeTorque錛歊ange: [0,inf)</p>
<p>鍒硅濺鍔涚煩</p>
<p>inverseWheelMass錛氳瀹氬姩鍔涘鍔犻熷害絳夌殑褰卞搷錛岃秺澶т綔鐢ㄤ駭鐢熺殑鏁堟灉瓚婂己</p>
<p>motorTorque錛歊ange: (-inf,inf)</p>
<p>鍔ㄥ姏鐭╋紝浣胯濺鍓嶈繘</p>
<p>steerAngle錛歊ange: (-PI,PI) 杞﹁疆鐨勫亸鍚戣錛屼互寮у害琛ㄧず</p>
<p>virtual void NxWheeleShape::setSuspension(NxSpringDesc spring) [pure virtual]</p>
<p>涓庡叾浠栫墿浣撶殑鑱旀帴鏈夊叧</p>
<p>涓婇潰榪欓儴鍒嗘槸浠ュ墠鍐欑殑鎬葷粨錛岃櫧鐒朵笉瀹屾暣錛岀幇鍦ㄤ篃涓嶆兂鍐嶇粏涓嬪幓浜嗭紝鍒版銆?/p>
<p>涓嶈繃鏈変竴鐐硅鎻愮殑鏄紝铏界劧杞﹁疆鐨勬懇鎿﹀姏錛屽脊鎬х郴鏁頒粈涔堢殑
錛坮estitution錛宻taticFriction錛宒ynamicFriction錛夊彲浠ヨ緗紝灝卞儚鍏朵粬鍩烘湰褰㈢姸涓鏍鳳紝浣嗕技涔庢病浠涔堜綔鐢紝灝辮窡鍏?
涓?涓鑸紝鎴戣瘯浜嗗緢涔咃紝閮芥槸榪欐牱錛屼笉鐭ヤ粈涔堝師鍥犮傝繖鏍瘋浣胯濺琛ㄧ幇鍑轟竴瀹氱殑闃誨姏鏁堟灉錛屽彲浠ラ氳繃鎶婂埞杞﹀姏璁句負涓瀹氬煎疄鐜般傚疄鐜頒笂鍙帶鍦板幓褰卞搷杞瓙榪愬姩閫熷害鐨勫彧
鏈夊姩鍔涘拰鍒硅濺鍔涳紙setMotorTorque錛宻etBrakeTorque錛夛紝鑰屽獎鍝嶈濺杞搴︾殑鏄紙setSteerAngle錛夛紝鍙﹀褰撶劧涔熷彲浠ョ洿
鎺ヨ緗疆瀛愮殑鍓嶈繘閫熷害鍜岃漿鍔ㄧ殑瑙掗熷害錛孨xWheelShape鎻愪緵浜嗚繖縐嶆帴鍙c備笉榪囦負浜嗛肩湡鎬э紝鏈濂戒笉瑕佽皟鐢ㄨ繖涓や釜鎺ュ彛錛屽洜涓鴻嚜宸卞疄鐜扮墿鐞嗘晥鏋滃彲鑳芥湁涓
鍫嗗叕寮忚漿鍖栵紝鑰屽彧鏈夊湪杞﹁締鍒濆鍖栨垨浣跨敤浠涔堥亾鍏風殑鏃跺欒皟鐢ㄣ?/p>
<p>瑕佸疄鐜頒晶婊戜箣綾葷殑鏁堟灉錛屽彧瑕佽皟鐢╯etLateralTireForceFunction鍗沖彲銆?/p>
<p>鍙﹀錛岀敤鐜版垚鐨凬xWheelShape榪樻槸鏈夌己鐐圭殑錛屽氨鏄緢闅捐皟鎵嬫劅錛屽彲鑳戒篃杈冮毦瀹炵幇澶嶆潅鐨勬晥鏋溿傛垜璋冧簡寰堜箙錛屾渶鍚庡彧鑳藉皢灝變簡銆?/p>
<p>PhysicsX涓嶉渶瑙嗚澶勭悊銆?/p>
<p>PhysicsX綾諱箣闂寸殑緇撴瀯涓嶰GRE閮ㄥ垎鍩烘湰涓婁竴妯′竴鏍楓?/p>
<p><strong>璧涢亾鍦堟暟鐨勫垽鏂疄鐜?/strong><strong></strong></p>
<p>涓嶇煡閬撳儚鏋佸搧椋炶濺涔嬬被鐨勬父鎴忚禌閬撳湀鏁版槸鎬庝箞瀹炵幇鐨勶紝搴旇涓庢垜浠殑涓嶅悓錛屽洜涓哄畠鍙互姣忔椂姣忓埢鐨勫垽鏂濺杈嗘槸涓嶆槸鍦ㄥ線鍥炶蛋銆傛垜浠兂榪囧彲鑳界殑鏂規硶錛屾瘮濡傝禌閬撳唴鏌愪竴鐐癸紝鍒ゆ柇鍏跺埌杞︿綅緗殑鐭㈤噺鍜岄熷害鐭㈤噺鐨勫す瑙掋傛病璇曡繃銆?/p>
<p>鎴戜滑鐢ㄧ殑鏄彟涓縐嶅彧鑳藉垽鏂綋鍓嶅湀鏁扮殑鍔炴硶錛屽瀹炵幇榪欑偣鏉ヨ寰堝噯紜紝鏃犺鍊掑紑錛岃濺浣撲竴鍗婄┛榪囪搗璺戠嚎鍐嶈繑鍥炰粈涔堢殑閮借兘鍑嗙‘鍒ゆ柇銆傝繖鍒╃敤浜哖hysicsX鐨凾rigger銆?/p>
<p>鍦ㄨ禌閬撹搗璺戠嚎浣嶇疆鏀劇疆涓や釜鐩擱殧寰堣繎鐨勫緢钖勪絾寰堥珮涓斾笌璧瘋窇綰跨瓑闀跨殑闀挎柟浣揘xActor銆傝NxActor鐨勫艦鐘跺睘鎬т負錛?/p>
<p>BoxDesc.shapeFlags |= NX_TRIGGER_ENABLE; // NxBoxShapeDesc BoxDesc;</p>
<p>榪欐牱浠諱綍NxActor紕板埌浜嗚繖涓墿鐞嗛兘浼氳Е鍙戜竴涓猳nTrigger榪囩▼銆傝繖閲屽彧瑕佸畾涔変竴涓被鐨勫璞★紙濡俶ItemTrigger錛変負鎺ュ彈瑙﹀彂浜嬩歡錛岃岃繖涓被緇ф壙NxUserTriggerReport錛屽茍瀹炵幇</p>
<p>virtual void onTrigger(NxShape& triggerShape, NxShape& otherShape, NxTriggerFlag status)鏂規硶銆傚啀</p>
<p>mScene->setUserTriggerReport(mItemTrigger); // NxScene* mScene;</p>
<p>灝卞彲鑳藉疄鐜般?/p>
<p>姣忔瑙﹀彂閮戒細璋冪敤涓嬈nTrigger錛屽湪onTrigger涓彲浠ュ垽鏂槸鍒氳繘鍏ヨ鐗╀綋榪樻槸紱誨紑銆傚疄闄呬笂瀵逛簬杞﹀湪涓や釜闀挎柟浣揘xActor涓殑浣?
緗紝鎬誨叡鏈変竷縐嶇姸鎬侊紙浠庡摢涓澶磋繘鍏ュ埌璇ヤ綅緗紝铏界劧緇撴灉浣嶇疆涓鏍鳳紝浣嗙畻涓轟笉鍚岀姸鎬侊紝榪欐牱鍙帓闄よ濺杈嗕竴鍗婅繘璧瘋窇綰垮張榪斿洖寮曡搗鐨勮鏁伴敊璇級銆傚叿浣撶姸鎬佸涓嬪浘錛?/p>
<p><img src=](http://p.blog.csdn.net/images/p_blog_csdn_net/tonywjd/image002.gif)
榪欐牱鐘舵侀棿鐨勮漿鎹㈠嵆涓猴細

鐢變簬鍙兘媯嫻嬪埌鏄摢涓狽xActor錛岃岃濺杈嗗搴旂殑綾伙紙榪欓噷NxVehicle錛夋槸鑷繁灝佽鐨勶紝閲岄潰鍖呭惈涓涓狽xActor錛屾墍浠ュ緱鍒板摢涓? NxVehicle鍙互鍏呭垎鍒╃敤NxActor涓殑涓涓猵ublic鎴愬憳void* userData鐨勪綔鐢紝璁╁畠鎸囧悜瀹冩墍鍦ㄧ殑NxVehicle瀵硅薄錛坱his錛夊嵆鍙?/p>
CEGUI鐨勫疄鐜?/strong>
寮曠敤Lzx涓孌碉細
“鍒╃敤OGRE寮曟搸鍜孋EGUI榪涜浜嗗熀鏈殑鍦烘櫙鍜孏UI甯冨眬榪涜浜嗙紪鍐欍?/p>
CEGUI璇誨彇2DGUI甯冨眬鐨勯厤緗枃浠訛紝榪欎釜鏂囦歡鏄敤xml鏉ョ紪鍐欑殑銆傝繖鏍峰彲浠ュ皢紼嬪簭緙栧啓鍜孶I鐨勮璁$浉瀵瑰垎寮錛屼嬌寰楃▼搴忚璁″拰UI緹庡伐璁捐鍙互鏇村ソ鐨勫垎寮銆傝鍙栧悗鍦?D鍦烘櫙涓繘琛岀粯鍒躲?#8221;
榪欎釜瀹為檯涓庢父鎴忚繃紼嬮儴鍒嗘槸鐙珛鐨勩傜敱浜庢椂闂寸揣榪紝鎴戜滑騫舵病榪涜寰堝ソ鐨勫皝瑁呭疄鐜幫紝鍙湪涓鍛沖湪鍐欏湪綾伙紙class CuteCarFrameListener : public ExampleFrameListener, public MouseMotionListener, public MouseListener錛変腑銆?/p>
榪欓儴鍒嗗叿浣撲笉鏄垜鍋氱殑錛屼篃娌″幓緇嗙┒銆傝屼笖鏄湪緗戠粶鍔犲叆澶辮觸鍚庡仛鐨勶紝鎵浠ュ茍娌¤冭檻緗戠粶鏂歸潰鐨勬帴鍙o紝榪欓噷渚夸笉璇﹁堪浜嗐?/p>
鍙﹀錛屽皬鍦板浘鍜岃濺閫熻〃鐨勫疄鐜頒篃鏄繖閮ㄥ垎鍐呭銆?/p>
灝忓湴鍥懼疄鐜板厛璐翠竴寮犺禌閬撳浘錛屽湪浠庣墿鐞嗗紩鎿庡緱鍒拌濺杈嗙殑浣嶇疆錛岀畻鍑哄湪鍦板浘涓婄殑鐩稿綋浣嶇疆錛堢櫨鍒嗘瘮錛夛紝鏄犲皠鏄劇ず鍒板皬鍦板浘涓婂嵆鍙?/p>
杞﹂熻〃鍒欐洿綆鍗曪紝璇誨嚭閫熷害錛岀敾涓浘灝卞彲銆?/p>
鐜╁瑙嗚Camera鐨勫疄鐜?/strong>
鍦ㄨ濺杈嗗疄鐜頒腑宸叉湁鎻忚堪錛岃繖閲屽彧鏄竴縐嶅疄鐜版柟妗堛?/p>
鍙垱寤轟竴涓狢amera瀵硅薄錛屾敞鎰忓畠涓嶈兘琚涓猄ceneNode鏉ttach錛屾墍浠ヨ漿鎹㈣瑙掓椂錛岃鍏坉etatch銆傝繖涓綋鏃舵帰绱簡濂戒簺鏃墮棿錛屼笉榪囬兘鏄疧gre鍩烘湰鐭ヨ瘑錛屽仛璧鋒潵榪樻槸綆鍗曠殑錛屼笉璇寸艦銆?/p>
鎻愪竴涓嬶紝鍦ㄥ疄闄呰濺杈嗚椹頒腑錛屼漢鐨勮綰胯窡闅忛氬父浼氭瘮杞﹁締杞集鐨勫姩浣滅◢鏅氫竴鐐圭偣錛岃繖閲屽氨鍔犱簡涓涓紦鍐詫紝涔熷氨鏄瘡嬈$湅鍒扮殑涓滆タ閮芥槸30甯т箣鍓嶇殑鍦烘櫙錛屼互瀹炵幇鏇村ソ鐨勬晥鏋溿傝繖涓氳繃涓涓摼琛紙鏁扮粍錛夊氨寰堝鏄撳疄鐜般?/p>
鍙﹀杞﹁締宸﹀彸鎽嗗姩鏃訛紝浜虹殑瑙嗚鏄笉浼氳窡鐫宸﹀彸鎽嗙殑錛岃櫧鐒剁幇瀹炰腑鍙兘浼氫竴浜涳紝浣嗗湪娓告垙涓細緇欎漢榪囦簬鏅冨姩鐨勬劅瑙夛紝榪欓噷灝辨妸宸﹀彸鎽嗗姩鍘繪帀浜嗭紝涔熷氨鏄疌amera鍚戜笂鍚戦噺濮嬬粓涓巠杞村鉤鏃訛紝榪欓氳繃涓浜涙暟瀛﹁繍綆椾究鍙紝璇村疄璇濓紝鎴戞槸鍑戝嚭鏉ヤ簡錛岃姳濂介暱鏃墮棿銆?/p>
澹伴煶鐨勫疄鐜?/strong>
涔熶笉鏄垜鍋氱殑錛屽悓瀛zx鍋氱殑錛屽紩鐢ㄤ竴孌碉細
“闊抽妯″潡鏀寔3D鍜岄潪3D鐨勬挱鏀炬ā寮忋傝冭檻鍒版挱鏀炬椂澶氭璇婚煶棰戞枃浠朵細鎻愰珮闊抽妯″潡鐨凜PU鍗犵敤鐜囪屽獎鍝嶆父鎴忚繘琛岋紝鎵浠ラ拡瀵逛竴涓煶棰戞枃浠訛紝姣忔鎶婇煶棰戞枃浠跺叏閮ㄨ鍙栧埌緙撳瓨涓屼笉鏄嬈¤鍙栵紝姣忔璇誨彇涓閮ㄥ垎銆傝繖鏄釜鐢ㄥ唴瀛樻崲CPU鏁堢巼鐨勯夋嫨銆?#8221;
澹伴煶鐨勫姞鍏ワ紝瀵瑰師鍏堢殑紼嬪簭鍩烘湰鏃犲獎鍝嶃傚洜涓轟嬌鐢ㄧ殑DirectSound鍜屼笂闈㈣繖浜涘熀鏈畻鐙珛錛孡zx灝佽寰椾篃鐩稿綋涓嶉敊銆傚0闊蟲挱鏀炬椂鑷姩浼氬紑綰跨▼錛屽娓告垙鍏跺畠妯″潡鏃犱換浣曞獎鍝嶃?/p>
鏈夊叧緗戠粶寮曟搸鍔犲叆澶辮觸
鍘熻鍒掔綉緇滃紩鎿庨噰鐢≧akNet錛屼篃灝佽浜嗕竴浜涗笢瑗匡紝涔熸彁渚涗簡涓嶉敊鐨勬帴鍙c備絾鐢變簬褰撳垵娓告垙鐨勬暣浣撹璁′笉鍏呭垎錛屾父鎴忔鏋惰璁℃垚涓涓狾gre浣滀負涓葷嚎 紼嬶紝鑰岀綉緇滈儴鍒嗛渶瑕佸崟鐙紑杈熶竴涓嚎紼嬫潵榪涜鏁版嵁浼犺緭鍜屽鐞嗭紝濡傛灉騫跺湪涓涓嚎紼嬮噷闈紝浼氫嬌綰跨▼闃誨錛屼嬌鏁版嵁浼犻佺浉褰撶紦鎱紝鐢氳嚦涓嶆垚鍔燂紝瀵艱嚧娓告垙鐨勬棤娉曠戶緇? 鐢變簬鏃墮棿鐨勫叧緋伙紝妗嗘灦鏇存柊鏃墮棿涓嶈凍錛屽彧濂芥斁寮冭繖鍧楋紝鍋氭垚鍗曟満鐗堛?/p>
鐢變簬緗戠粶寮曟搸闇瑕侀澶栫殑綰跨▼鍜岀紦鍐詫紝鑰孫GRE騫朵笉鎻愪緵榪欑鍔熻兘銆傛渶濂界殑鍔炴硶鏄垱寤轟竴涓富綰跨▼錛岃屾妸OGRE涓驚鐜綔涓轟竴涓瓙綰跨▼鏉ュ鐞嗐備絾榪欐牱鍋氾紝鍘熷厛鎴戜滑灝佽鐨勭郴緇熸槸涓嶈兘澶熸敮鎸侊紝澶ч噺鏀瑰彉浠g爜錛屾椂闂村凡涓嶅錛屾墍浠ユ棤濂堝彧濂芥斁寮冦?/p>
鍦ㄧ綉緇滀笂鑺辯殑綺懼姏澶皯錛屼竴寮濮嬩笉澶熼噸瑙嗕篃鏄釜鍘熷洜鍟娿傝屼簨瀹炰笂鎴戜滑瀵逛簬緗戠粶涓婄殑緙栫▼姣棤緇忛獙銆?/p>
璐翠簺娓告垙鎴浘錛岀編宸ヨ繕铔?/strong>PP








鍚庤瘽
璋冭瘯灝辯敤OGRE鎻愪緵鐨凩og濂戒簡錛屼笉鑳戒竴姝ユ榪涜璋冭瘯銆傝繕鏈変竴涓ソ鍔炴硶灝辨槸鐢熸垚.map鏂囦歡錛屽啀鏍規嵁windows涓嚭閿欐彁紺烘涓氬父鎻愮ず榪愯鍒? 鍝釜铏氭嫙鍦板潃鍑洪敊錛屽湪.map鏂囦歡涓壘鍑轟唬鐮佺殑鍏蜂綋鍑洪敊琛屻傝繖瀹為檯涓婂浜庡凡緇忕粰鐜╁浣跨敤鐨勭▼搴忔牴鎹帺瀹惰幏寰楃殑鍑洪敊淇℃伅鎵綛ug寰堟湁甯姪
windows2000錛孷S2005緙栬瘧NxOgre
鐜錛?span lang="EN-US">windows2000錛寁s2005錛坈++錛宼eam suite錛夛紝.net1.0
涓昏鍐呭
1. vs2005 sp1
2. ogre1.40:
3 PhsyX2.62
4. NxOgre
5 緙栬瘧NxOgre tutorials
1. vs2005 sp1
1.1 鏌ョ湅鑷繁鐨剉s2005鏄惁宸茬粡瀹夎浜唖p1銆?o:p>
a) 鍦↖DE閲岄夋嫨“甯姪->鍏充簬Visual Studio 2005”鑿滃崟欏癸紝鏌ョ湅涓涓嬶紝紜SP1鍒椾負鍏朵腑涓涓畨瑁呯殑浜у搧錛?o:p>
b) 鍦↖DE閲岄夋嫨“鏂囦歡->鏂伴」鐩?#8221;鑿滃崟欏癸紝鏌ョ湅涓涓嬶紝紜VS 2005 Web搴旂敤欏圭洰妯″瀷閫夐」(鏄唴緗簬SP1涓殑)琚畨瑁呬簡錛岃屼笖鏄搗浣滅敤鐨勶細
錛堝紩鑷?a target="_blank">http://www.shengfang.org/blog/in ... a2aaf8dc91169701875錛?o:p>
1.2 sp1鐨勪笅杞?o:p>
錛堝紩鑷?a target="_blank">http://hi.baidu.com/yongfa365/bl ... e5b57fcb80c484.html錛?o:p>
VS2005 SP1鑻辨枃姝e紡鐗堜笅杞藉湴鍧 431M http://download.microsoft.com/do ... B926601-X86-ENU.exe
VS2005 SP1涓枃姝e紡鐗堜笅杞藉湴鍧 440M
http://download.microsoft.com/do ... B926604-X86-CHS.exe
1.3 sp1鐨勫畨瑁呮敞鎰忎簨欏?o:p>
1.瀹夎鏃墮棿浼氶潪甯擱暱錛屽鏋滄満鍣ㄩ厤緗笉鏄緢楂樼殑璇濋渶瑕?涓皬鏃訛紝涓鑸殑璇濅篃闇瑕?涓皬鏃跺乏鍙蟲墍浠ヨ鑰愬績絳夊緟銆?o:p>
2.瀹夎鍓嶆鏌ヤ綘鐨刢鐩樻槸鍚︽湁澶т簬3G鐨勭┖浣欑┖闂達紝鍥犱負瀹夎鐨勬椂鍊欎細閲婃斁寰堝涓存椂鏂囦歡鍦╟鐩橈紝濡傛灉涓嶈兘淇濊瘉澶т簬3g鐨勮瘽鍙兘浼氬彂鐢熷紓甯擱敊璇紝涓嶈繃鎴戝湪瀹夎鐨勬椂鍊欐病鏈夊崰鐢?G榪欎箞鎭愭栵紝涓嶈繃涔熻搗鐮佸崰鐢ㄤ簡1G澶氱殑絀洪棿銆?o:p>
錛坰p1涓嬭澆鍒扮殑閭d釜紓佺洏鍒嗗尯錛屾渶濂界┖闂翠篃瑕佸ぇ涓浜涳級
3.濡傛灉浣犱互鍓嶅畨瑁呰繃web application project錛屽湪瀹夎vs2005 sp1浠ュ墠璇峰厛鎶婁粬鍗歌澆錛屼笉鐒朵笉鑳芥垚鍔熷畨瑁卾s2005 sp1
4.vs2005sp1鐨勮ˉ涓佸寘鏄妸浣犳満鍣ㄤ笂鎵鏈夊崟鐙榪噕s2005鐨勭増鏈殑琛ヤ竵閮芥墦涓?濡傛灉鏈哄櫒涓婅浜哣isual Web Developer Express鍜孷isual Studio team sutie,閭d箞浠栧氨瑕佽繍琛屽畨瑁呰ˉ涓佷袱嬈?
錛堝紩鑷?a target="_blank">http://www.cnblogs.com/ltp/archive/2007/02/25/656562.html錛?o:p>
1.4 瀹夎sp1
鍦?a target="_blank">http://www.cnblogs.com/ltp/archive/2007/02/25/656562.html銆愭枃1銆戜腑鏈塿s2005 sp1瀹夎鐨勪竴鑸柟娉曘?o:p>
鍙槸錛?.鎴戠殑鏈哄櫒鏄痺indows2000錛屾壘涓嶅埌“杞歡闄愬埗絳栫暐”銆?.鎵ц銆愭枃1銆戜腑鐨?bat鏂囦歡鏃跺嚭閿欙紞錛嶆棤娉曞皢鐩稿簲鐨勯敭鍊煎鍏ユ敞鍐岃〃銆?o:p>
瑙e喅鏂規硶鏄墜鍔ㄥ鍏ユ敞鍐岃〃閿鹼細
* "寮濮?錛嶃?#8220;榪愯”錛嶃嬮敭鍏egedit錛堝洖杞︼級銆?o:p>
* 鎵懼埌HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer
* 鍦ㄥ叾涓嬮潰寤虹珛涓欏癸細鍚嶇О錛歁axPatchCacheSize錛岀被鍨嬶細REG_DWORD錛屾暟鎹鹼細0
鐜板湪鎵ц鎵瑰鐞嗘枃浠舵潵瀹夎
鍋囪涓嬭澆鐨剆p1瀛樻斁鍦ㄧ洰褰昫ir涓嬶紝
1錛?鍦╠ir鐩綍涓嬪緩绔媋.bat鏂囦歡銆?o:p>
2錛?鐢ㄨ浜嬫湰鎵撳紑a.bat錛屾妸涓嬪垪鐨勪唬鐮佸鍒惰繘鍘伙紝淇濆瓨錛屽叧闂?o:p>
regedit export HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer installer.reg
regedit add
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer /v
MaxPatchCacheSize /t REG_DWORD /d 0 /f
net stop msiserver
start /wait VS80sp1-KB926604-X86-CHS.exe
//錛堟湰琛屾槸娉ㄩ噴錛屼笉瑕佹嫹璐濓級VS80sp1-KB926604-X86-CHS.exe鏄笅杞界殑涓枃sp1鏂囦歡鐨勫悕縐般傚鏋滀笅杞借嫳鏂囩殑sp1錛岄渶浣滅浉搴旂殑鏇挎崲
regedit delete HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /f
regedit import installer.reg
net stop msiserver
3錛?鍙屽嚮鎵цa.bat銆傝櫧鐒跺湪鎴戠殑window2000涓婁粛鏃т細鏈夊嚑涓敊璇備絾鍙互鏃犺涔嬨?sp1寮濮嬪畨瑁呬簡銆?o:p>
cpu1.7G錛屽唴瀛?56M銆傚畨瑁呮椂闂磋繎3灝忔椂錛宑鐩樺崰浜?G銆?o:p>
瀹夎NxOgre鍩烘湰鏄寜鐓у畼鏂圭殑瀹夎姝ラ錛?a target="_blank">http://nxogre.org/Installing
2. ogre1.40:
鍦ㄨ繖閲屼笅杞戒互涓嬩袱涓寘http://www.ogre3d.org/index.php? ... =412&Itemid=132
ogre-win32-v1-4-0.zip錛堣В鍘嬬緝鍒癏:\ProgramFiles\Ogre\ogrenew錛?o:p>
OgreDependencies_VC8SP1_Eihort_20070323.zip錛堣В鍘嬬緝鍒癏:\ProgramFiles\Ogre\ogrenew涓嬶級
緙栬瘧ogre.sln欏哄埄閫氳繃
娉ㄦ剰錛岃鏈夎凍澶熺殑紜洏絀洪棿鏉ョ紪璇憃gre鐨勬簮浠g爜錛佹垜閫夋嫨鎵圭紪璇戯紞銆嬪叏閮ㄣ傜紪璇戝畬鎴愬悗錛宱grenew鐩綍绔熺劧鏈?.59G錛侊紒錛?.obj *.ncb *.sbr *.idb *.pdb *.dep鏂囦歡鍗犱簡3.47G錛?o:p>
3 PhsyX2.62
鍙互鍙傜収瀹樻柟鐨勬楠?a target="_blank">http://nxogre.org/Installing
4. NxOgre
4.1 涓嬭澆NxOgre
NxOgre.0.4.RC3.zip錛堝彲浠ュ湪瀹樻柟http://nxogre.org涓嬭澆錛?o:p>
NxOgre.0.4.RC3.tutorials.zip錛堝彲浠ュ湪瀹樻柟http://nxogre.org涓嬭澆錛?o:p>
NxOgrePatch-ForEihort-VS8SP1.zip錛坉ownload from http://www.ogre3d.org/phpBB2addons/viewtopic.php?t=3505錛?o:p>
4.2 瑙e帇緙?o:p>
涓変釜鍖呭叏閮ㄨВ鍘嬬緝鍒癏:\ProgramFiles\Ogre\NxOgre
4.3 璁劇疆鐜鍙橀噺
NXOGRE_DIR=H:\ProgramFiles\Ogre\NxOgre
OGRE_HOME=H:\ProgramFiles\Ogre\ogrenew\OgreMain;H:\ProgramFiles\Ogre\ogrenew
(OGRE_HOME鐨勫艱緗殑鍙兘鏈夐棶棰樸傚洜涓虹紪璇慛xOgre tutorials鏃舵彁紺烘壘涓嶅埌ogre.h)
PHYSX_DIR=H:\Program Files\AGEIA Technologies\AGEIA PhysX SDK\v2.6.2
4.4 緙栬瘧NxOgre
鎵撳紑H:\ProgramFiles\Ogre\NxOgre\NxOgre.VC8.sln
鍙兘鏄墠闈㈢殑OGRE_HOME璁劇疆鐨勪笉瀵癸紝鎵浠ラ渶瑕佸姞鍏gre鐨勭洰褰曟墠鑳界紪璇戦氳繃
鍦ㄥ睘鎬э紞>c/c++錛?gt;inlude鐩綍閲?#8220;鏈鍓嶉潰”鍔犲叆“H:\ProgramFiles\Ogre\ogrenew\OgreMain\include”緙栬瘧ok
鍦ㄥ睘鎬?>閾炬帴錛?gt;搴撶洰褰?#8220;鏈鍚?#8221;鍔犲叆"H:\ProgramFiles\Ogre\ogrenew\lib"
5 緙栬瘧NxOgre tutorials
5.1
鎵撳紑H:\ProgramFiles\Ogre\NxOgre\tutorials\NxOgreTutorials.sln
鍙兘鏄墠闈㈢殑OGRE_HOME璁劇疆鐨勪笉瀵癸紝鎵浠ラ渶瑕佸姞鍏gre鐨勭洰褰曟墠鑳界紪璇戦氳繃
鍦ㄥ睘鎬э紞>c/c++錛?gt;inlude鐩綍閲屽悗闈㈤檮鍔?o:p>
H:\ProgramFiles\Ogre\ogrenew\OgreMain\include;
H:\ProgramFiles\Ogre\ogrenew\Dependencies\include
鍦ㄥ睘鎬?>閾炬帴錛?gt;搴撶洰褰?#8220;鏈鍚?#8221;闄勫姞
H:\ProgramFiles\Ogre\ogrenew\lib;
H:\ProgramFiles\Ogre\ogrenew\Dependencies\lib\Release
5.2 淇敼婧愭枃浠?o:p>
寮曡嚜http://www.ogre3d.org/phpBB2addons/viewtopic.php?t=3508
浠?01.cpp鏂囦歡鍜屽叾欏圭洰涓轟緥銆傚叾浠栧悓鐞?o:p>
1.濡傛灉鎻愮ず“error C2039: 'relX' : is not a member of 'OIS::MouseState' ”
闇瑕佺敤ms.X.rel鏇挎崲ms.relX
濡傛灉鎻愮ず“error C2039: 'relY' : is not a member of 'OIS::MouseState' ”
闇瑕佺敤ms.X.rel鏇挎崲ms.relY
濡傛灉鎻愮ず“error C2039: 'relZ' : is not a member of 'OIS::MouseState' ”
闇瑕佺敤ms.Z.rel鏇挎崲ms.relZ
2.濡傛灉鎻愮ずMSVCRT.lib(crtexe.obj) : error LNK2019: unresolved
external symbol _main referenced in function ___tmainCRTStartup
Release/nxTutorial101.exe : fatal error LNK1120: 1 unresolved externals
涓涓彲琛岀殑瑙e喅鏂規硶錛?o:p>
a.鍏堝皢tutorialApplicationEihort.h涓殑榪欐浠g爜娉ㄩ噴鎺?o:p>
#ifdef _CONSOLE
#define TUTORIAL_VOIDMAIN \
int main(int argc, char *argv[]) {\
...
}
#else
#define TUTORIAL_VOIDMAIN \
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) {\
...
}
#endif
b.灝哸涓墍璇寸殑main鍑芥暟鎴杦inmain鍑芥暟鎷瘋礉鍒?01.cpp鏈熬銆?o:p>
3.鍙兘榪橀渶瑕佹敞閲婃帀main鎴朩inMain鍑芥暟涓殑SET_TERM_HANDLER;
4.娉ㄩ噴鎺?01.cpp鏈熬鐨凾UTORIAL_VOIDMAIN
鍏朵粬闂鍙互鍒?span lang="EN-US">NxOgre璁哄潧鍜ㄨ錛?o:p>
http://www.ogre3d.org/phpBB2addo ... 5649a7b87f21b4a057b