Time of Update: 2018-12-05
先貼上Demo
Time of Update: 2018-12-05
setlocale(LC_ALL,"Chinese-simplified");只要在winmain裡面增加這句話,就可以解決中文路徑問題。================================================================================INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )#elseint main(int argc, char *
Time of Update: 2018-12-05
最近在用PLSM2處理超大地形,雖然PLSM2有些高貴,但是總算熬過來了,感覺還可以。PLSM2白送的幾張地形圖都成功地渲染出來了。其中我用到了那個Tool_MapSplitter工程。該工程產生的MapSplitter.exe專門擅長於分割地圖。(PLSM2需要你把配製好的地圖分割成Pages(Even just One page)才能使用。)
Time of Update: 2018-12-05
#define M(row,col) m[col * 4 + row]void Transform_Point(double out[4], const double m[16], const double in[4]){ out[0] = M(0, 0) * in[0] + M(0, 1) * in[1] + M(0, 2) * in[2] + M(0, 3) * in[3]; out[1] = M(1, 0) * in[0] + M(1, 1) * in[1] + M(1, 2)
Time of Update: 2018-12-05
在我看來,渲染到紋理和渲染到某個視窗其實沒多大區別,如果一定要說點區別,那就是渲染的目標不同,後者是視窗,前者是某個紋理。 下面列出摘抄自某網友部落格上的關於渲染到紋理的三部曲: 1、建立渲染目標紋理,關鍵要指定TU_RENDERTARGET參數,在建立這個渲染目標紋理的過程中,Ogre會自動調用
Time of Update: 2018-12-05
由於資料保護的需要,一款遊戲一般都會有自己專屬的資源套件,這樣做既有利於智慧財產權的保護,又減少了磁碟片段的產生。Ogre本身是支援的Zip包的,但Zip包不具要資源保護的特性,隨便用個winrar就可以把資源開啟並匯出,這樣就失去了資料保護的意義。現在假設你的操作資源套件的API已經完成,下一步需要整合到OGRE中去,那麼該怎麼做呢,大致我機械式的列出下面幾步,照著做一般就不會錯。1. 繼承Ogre::Archive 派生出新的,假設派生出 Ogre::XXXArchive2.
Time of Update: 2018-12-05
關於3D遊戲碰撞系統的構建,不同的遊戲類型差別很大。如極品飛車,HL2這些運動類、FPS的遊戲,需要非常精確的碰撞計算,剛體運動等等,好的解決方案就是採用一個成熟的物理引擎。對於WOW這類角色扮演的遊戲,精確的碰撞不是它最想要表現的方面。因為採用物理引擎會佔用過多的CPU資源,考慮到效率,這類的遊戲一般採用簡化的碰撞系統。 該碰撞系統的構建最核心的內容就是物理世界的構建。物理世界不關心渲染,只考慮模型在世界空間中的位置,形狀等資訊。我簡要的描述下碰撞檢測的過程
Time of Update: 2018-12-05
1.所有需要掛在SceneNode上的user-object, 都需要從MovableObject來繼承,比如一個最典型的應用是 3DSoundSource.2.Ogre中RenderQueue的相關標號,標號越小的其最先渲染。Background - Queue 0Skybox - Queue 20World Geometry - Queue 30MovableObjects - Queue 50Overlays - Queue
Time of Update: 2018-12-05
不管在什麼引擎中渲染操作都是一個非常耗費系統資源的過程,一個物體要渲染到螢幕上就必須要經過一次渲染操作,假如情境中有幾萬棵相同的樹,那麼系統也會執行幾萬次的渲染操作,這樣程式效率會非常慢,如果能將這些具有相同渲染狀態的樹,用一次渲染操作都畫出來,那麼效率就會提升好幾倍。Ogre引擎所提供的Ogre::StaticGeometry類,就是實現批次渲染的操作。如果一些物體載入情境後就不打算在進行旋轉,縮放,移動等操作的話,那麼就可以以靜態幾何體的類型載入情境。但是批次渲染也並不是在所有情況下效率都高
Time of Update: 2018-12-05
三維情境的渲染最佳化(一) ——如何進行有效效能評測 對於任何一個3D應用程式來說,追求情境畫面真實感是一個無止盡的目標,其結果就是讓我們的情境越來越複雜,模型更加精細,這必然給圖形硬體帶來極大的負荷以致於無法達到即時繪製幀率。因此,渲染最佳化是必不可少的。在渲染最佳化之前,我們需要對應用程式效能進行系統的評測,找出瓶頸,對症下藥。對於3D應用程式來說,影響效能
Time of Update: 2018-12-05
By
Time of Update: 2018-12-05
在使用PLSM2時,以前的標準resources.cfg檔案需要修改,其實就是添加了[PLSM2]節,這部分內容會被PLSM2管理器讀取:[PLSM2]FileSystem=../../Media/paginglandscape2FileSystem=../../Media/paginglandscape2/fontsFileSystem=../../Media/paginglandscape2/modelsFileSystem=../../Media/paginglandscape2/ove
Time of Update: 2018-12-05
靜態情境包括了地形、植被、建築物等一般不改變位置的實體集合,對它的最佳化是情境最佳化中最重主要的內容。本文就靜態情境最佳化的常見問題進行了探討。1 批的最佳化
Time of Update: 2018-12-05
在我的某篇日誌中,說過PLSM2能使用的地圖需要事先分割,形成Pages。下面介紹PLSM2源碼包中的免費地圖分割工具Tool_MapSplitter的使用方法。(關於該工具源碼中的一個Bug的介紹及修正方法見我的另一篇日誌)
Time of Update: 2018-12-05
在Symbian匯入Bmp圖片應該是簡單的事,網上也有介紹,不知道是不是我的SDK是3rd Edition SDK的,遇到了些問題,搞了好久,終於被我搞出來了。下面分享下學習的經驗:1.在Carbide.c++開啟group下面的 工程名.mmp 檔案,選擇 Sources欄,選擇右邊的 Bitmaps,如果下面沒有任何mbm檔案,就添加一個;按下Default按鈕,他會自動產生mbm檔案的路徑,再選擇Add From
Time of Update: 2018-12-05
在OgreSDK/PLSM2/Tools/MapSplitter下有個Tool_MapSplitterFontEnd.exe檔案,該檔案本來是隨源碼包帶來的地圖分割工具,但在最近的PLSM2中它已經被Tool_MapSplitter工程產生的PagingLandcape2_MapSplitter.exe取代了,前一個是GUI模式,需要指定好幾個設定檔才可以分割地圖,而後一個工具是命令列模式的程式,它會自動地從resource.cfg中指定的路徑(例:Media/paginglandscape2/
Time of Update: 2018-12-05
前言:工作過程中,代碼整合經常進行,每次都要對檔案進行對比,工作煩瑣。利用TortoiseSVN可以快速實現代碼自動對比並匯出的功能。 一、配置好TortoiseSVN的工作環境。二、在本地工作複本目錄,右鍵菜單選擇[TortoiseSVN]à [Show log],彈出log messages對話方塊。如:圖1.1 Show log 菜單 圖1.2 Log Message對話方塊 三、選中兩個不同版本的,通過選擇右鍵菜單[Compare revisions]。1.3所示。四、彈出對話方塊1.4
Time of Update: 2018-12-05
WINCE下一般都沒有鍵盤做為輸入,所以如果要輸入漢字的話,方法一是在IMEdll中彈出SIP軟鍵盤來按鍵,方法二當然就是手寫輸入了。我們用的是方法一,OS固化IME後,從開機,IME的status window就一直在,因為一直都有IMN_OPENSTATUSWINDOW訊息通知IMEDLL開啟status window。這時就要想法隱藏掉tatus window了,方法一:HIMC ImmAssociateContext( HWND hWnd, HIMC
Time of Update: 2018-12-05
文章目錄 紋理資料來源定義 目錄1 介紹 2 地圖選擇配置 2.1 maptools.cfg 2.2 paginglandscape2.cfg 3 地圖定義細節3.1 公用配置選項(maptools.cfg和paginglandscape2.cfg) 3.1.1 地圖定義 3.2 地圖分割專用配置3.2.1 高度圖定義 3.2.2 資料來源 3.2.3 紋理 3.3 運行時配置(Plugin配置)3.3.1 分頁選項 3.3.2
Time of Update: 2018-12-05
從VC提供的MFC類派生圖中我們可以看出視窗的派生關係,所有的視窗類別都是由CWnd派生。所有CWnd的成員函數在其衍生類別中都可以使用。本節介紹一些常用的功能給大家。 改變視窗狀態:BOOL EnableWindow( BOOL bEnable = TRUE );可以設定視窗的禁止/允許狀態。BOOL IsWindowEnabled( );可以查詢時段的禁止/允許狀態。 BOOL ModifyStyle( DWORD dwRemove, DWORD dwAdd, UINT nFlags = 0