Time of Update: 2018-12-04
崩潰中,終於翻譯完了,不管到底翻譯得如何。很久沒有這樣熬通宵來翻譯文章的了,天天被外包折騰,夜裡唯有的時間只能用來做自己想做的東西。我應該是屬於晝伏夜出動物,這樣才能滿足自己的喜好和習性吧?由於機緣的巧合,去年開始,自從在工作中被迫接觸到這個技術之後,就不斷被Unreal的Deferred
Time of Update: 2018-12-04
這些天來,我一直想在fx中,分析出vs,ps函數的參數資訊,然後根據這些資訊來做一些事情,今天,終於調用了了ID3DXEffect傳說中的GetFunctionByName介面,很抱歉,系統給了我一個NULL的Handle,於是,我開始懷疑是不是函數名寫錯了,檢查半天,沒有啊。看看另外一個函數GetFunction吧,Index為0,返回NULL,一直到100,依然返回NULL,崩潰,馬上想到通常的終極解決方案
Time of Update: 2018-12-04
最近看了看星際爭霸2的技術白皮書,感覺有塊石頭落了地:暴雪使用了Deferred Shading,就表明這個技術的效能和表現是絕對沒問題的,暴雪一向的風格都是適應性最好的技術(這其中,效能是一個重要的指標)實現在此適應性上,最好的效果。看來Deferred Shading正好是這樣一種選擇——對於星際2和暗黑3這種風格的遊戲而言。實用的就是好的,AO很好,可惜不實用,於是就有了SSAO,滋光很好,可惜不實用,就有了God Ray,次表面法線,Light
Time of Update: 2018-12-04
文章地址:http://www.cublog.cn/u/17999/showart.php?id=159057運行這個程式需要預先設定棧記憶體和檔案描述符上限, 否則運行失敗ulimit -n 16384ulimit -s 4096檔案名稱:server.c編譯: gcc server.c -Wall -O2 -pthread -o server程式源碼如下(請自行編輯宏定義SERVER_IP為自己的IP): /*Linux 2.6 x86_64 only*/#include #include
Time of Update: 2018-12-04
Sticks Time Limit:1000MS Memory Limit:10000K Total Submit:24457 Accepted:5494 DescriptionGeorge took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the original state,
Time of Update: 2018-12-04
有的地圖不是tile的整數倍,有的地圖沒有WCollision檔案,有的地圖有centre等有的地圖沒有光照圖等等 比如武當的地圖不是tile的整數倍,那麼就需要調整tile大小,其實只需要稍微改動源碼沒有經過最佳化的,比如不需要更改的函數參數可以全部改成const引用,提高效率的自己去最佳化了, void TLBBTerrain::createTerrain(){// 產生材質,
Time of Update: 2018-12-04
大家都知道,網路tcp,流socket是不能保證收到的包是邏輯完整的,也許一個邏輯完整的被分成兩段發送,所以我們使用流socket就需要將接收的包(物理包),經過整理變成邏輯包。然後再處理。這個整理包的函數就是所說的拼包函數。下面的代碼用環形緩衝實現了一個拼包函數。環形緩衝可以減少不必要memcpy,從而提高效率。 // 這是per-I/O資料。它包含了在套節字上處理I/O操作的必要資訊struct TPerIoData{ OVERLAPPED ol;
Time of Update: 2018-12-04
要獲得檔案檔案的檔案清單,只要獲得Archive的指標,就可以調用list()函數獲得檔案清單 但是如何獲得Archive的指標呢,先看看資源的載入過程: 先從resources.cfg檔案擷取資源的路徑,資源群組,資源檔類型,這3個資料: ConfigFile cf; cf.load("resources.cfg"); 再把這3個資料傳入資源定位的函數:ResourceGroupManager::getSingleton().addResourceLocation(archName,
Time of Update: 2018-12-04
很多2D小遊戲的地圖並不是整塊的,而是很小的BMP圖片(比如32X32)通過排列拼接起來的,而這些小圖片編號為0,1,2,3等。這樣就可以寫一個檔案儲存體地圖,比如一個地圖檔案開啟,是這樣的: 111111111111111111111110000000000000000011112222222222222222211112222222220000000011113333333333333333311110000000000000000011112222222222222222211 那麼我們就
Time of Update: 2018-12-04
根據盛大的泡泡堂遊戲改編素材有的cpoy網上,有的自己PS的,話說做遊戲,自己也成了半個美工啊,PS,3DMAX都得會 遊戲準系統全部實現,比較完整的遊戲,代碼注釋也很完整,適合新手學習...完整可以編譯源碼已經上傳到CSDN我的資源中,下載連結...放在CSDN的資源裡面,要登入才可以下http://qq18052887.download.csdn.net/先看幾個圖吧 下載連結...放在CSDN的資源裡面,要登入才可以下http://qq18052887.download.csdn.ne
Time of Update: 2018-12-04
OGRE的程式由於大量使用STL,加上我們也喜歡STL.所以在debug模式下,如果程式稍微大一點,要想調試幾乎不可能,那速度不是人可以忍受的所以好用的斷點啊,快速監視啊,assert啊,基本不能用. 為了速度,只有在release模式下用log列印日誌的方式自己輸出重要訊息.而要大量使用logManager,就必須要用流的方式來列印資料,可以把字串和變數串連起來,省去轉換變數為字串的麻煩 至於怎麼用流的方式,分2種情況 如果是早期的1.4X版本,可以用StringUtil::StrStrea
Time of Update: 2018-12-04
寫個WINDOWS小遊戲,連結如題。 我納悶了,我項目是選的windows應用程式,不是控制台啊,主程式也是_tWinMain,居然說我的winmain無法解析! 馬上開啟項目看屬性,一切正常。 懷疑是字元問題,入口改成wWinMainCRTStartup,還是不行, 後來仔細分析:_tWinMain問題,轉到_tWinMain的定義去居然沒反應,_tWinMain是在tchar.h定義的,果然是宏定義問題,包含標頭檔tchar.h然後連結,問題解決!
Time of Update: 2018-12-04
用其他大俠資源提取工具,可以提取到情境資料,有些資料格式是XML檔案,很容易看懂,而有些就不能直接開啟,要自己提取資料了,比如GridInfo和HeightMap檔案,一個是網格檔案,一個是高度圖檔案,十分重要,我準備先研究這2個傢伙. 先說網格檔案:找到網上大俠的一些研究資料:http://www.mobilegamebase.com/blog/article.asp?id=17不過,此文中有點筆誤的地方,就是那個nFirstLayerOP的位標記的描述有點錯誤,正確的應該如下://
Time of Update: 2018-12-04
LibUIDK簡介:LibUIDK是專業開發Windows平台形使用者介面的開發包,該開發包基於Microsoft的MFC庫。使用此開發套件可輕易把美工製作的精美介面用VC實現,由於使用LibUIDK建立的所有視窗都支援控制項的從控制項工具欄中拖入建立,所以極大的提高了新產品的開發速度,並大大增強圖形化使用者介面(GUI)的親和力。LibUIDK還可以使您的軟體輕鬆具有當今流行的換膚功能,以提高產品的競爭力。 LibUIDK的目標使用者:任何使用Microsoft Visual C++ 6.0、
Time of Update: 2018-12-04
學習任務重,業餘時間就少了啊,進度很慢,水面弄了半天都不是很理想, 主要是alpha設定的問題導致看起來有格子,反正是透明沒有實現很好的漸層,如果一個網格只實現一個層級的透明度,肯定看起來有很突兀, 另外不知道那個紋理縮放0.25和0.3到底有什麼用 做法不難,動態算出水平面,然後自己做網格mesh,和做地形差不多. 演算法可以用種子填充演算法,遞迴尋找,有點像掃雷遊戲的自動延伸 我給出自己的源碼:/*** 種子填充演算法,最簡單的四向連通,用來產生水平面* @param fillPointY
Time of Update: 2018-12-04
Ogre渲染模式:平面(solid)、線框(wireframe)、定(point)Ogre中可以把某單個物體以線框模式顯示,方法有兩種:1、直接更改材質檔案(material),在pass中設定此種材質的渲染模式為線框模式:polygon_mode <wireframe|point|solid> 例如:material Material_#47/polagrel1{ technique { pass {
Time of Update: 2018-12-04
觀察者模式是遊戲開發中十分常用的模式,Ogre也大量運用了此模式來監聽,比如FrameListener.ResourceListener這種方式比常見的回呼函數更好用,因為觀察者模式是基於介面的,任何類只要繼承這個介面,註冊後就可以監聽我們需要觀察的對象。不想監聽,取消註冊就行了, 具體實現原理,我們以為FrameListener為例子,然後再舉一反三在自己的遊戲中使用它,比如情境編輯器,我拖動了一個entity,改變了他的位置,那麼顯示對象屬性的控制項應該更新這個對象的位置,我們就可以設計一個
Time of Update: 2018-12-04
今天,新實驗的Modifier思想測試終於基本過了,現在v3dModelObject已經類似Max裡面的INode,自身RefObject了一些資料,也就是Position,Normal,Binormal,UV,SkinBlend等,每個v3dModelObject都有一個ModifierStack,可以容納多個v3dModifier來修改它的資料,這些Modifier處理資料後,能夠產生一個引擎需要的v3dMesh資料,最終,無論是渲染還是別的資料訪問,都通過v3dMesh來完成。目前,我實現
Time of Update: 2018-12-04
最近,隨著外包告一段落,開始整理和重構GC了,順手整理一下GC的MRT。之前沒有認真讀完的星際2的白皮書,這次至少是把MRT部分和Shadow部分讀了一下。先說MRT吧:星際2的MRT大約如下配置: 具體就不解釋了,看樣子,為了保證精度,每個MRT應該都是64-bit的,0、2、3三個MRT儲存表面顏色資訊,1用來儲存對於DS而言最重要的Normal
Time of Update: 2018-12-04
地形類的源碼裡面關聯了其他類的一些東西,其實就是XML讀取的協助類而已 TLBBFileBuffer這個類就是一個記憶體緩衝而已,簡單說就是一個uchar的數組... 用來把2進位檔案一次性讀取到記憶體中而已. My Code裡面只把XML類型的檔案讀取到記憶體裡面,其他檔案比如heightmap等,並沒有用這個類來讀取 TLBBFileBuffer這個類沒什麼東西,原理就是: DataStreamPtr mStreamPtr =