Time of Update: 2018-12-04
一、百家爭鳴 俗話說,程式員半年不學新東西,就變奧特曼(out man,過時之人)了。IT行業可以說是變化最快的行業,每年都有大量的新概念、新術語、新技術被創造出來,在多數人還在一頭霧水時,“更好的”替代品又被創造出來。別的不說了,單說設計方法。
Time of Update: 2018-12-04
物件導向的程式設計模式無疑是成功的,虛函數機制對構造複雜系統無疑是非常有用的。但面對足夠複雜的問題時,我們往往會需要更加強大的機制。遊戲的實體層的構造,就是其中一種可能的情況。
Time of Update: 2018-12-04
第一篇CSDN部落格,想介紹下我在今年工作之餘開發的一個簡單的遊戲引擎和編輯器。由於我從事遊戲引擎開發工作,平時總是需要研究一些新的東西,比如嘗試一些新的特效,研究其他遊戲的思路等等,這就需要一個自己的引擎。同時在開發引擎的過程中,結合遊戲的需要,自然想到了同時開發一個靈活的編輯器,編輯器不受引擎功能的限制,不受介面開發複雜度的限制等等。在半年多的時間裡,完成了一個簡單引擎和編輯器。
Time of Update: 2018-12-04
本文連結:單例模式與雙重檢查方案一個類在全域只有一個執行個體的應用方式,即為單例模式。單例模式一般應用在全域性的工具之類的類上,如一個程式中的各種檔案管理工具(這個有可能進化成多例模式),或者是一些工具類(其實一些簡單的單例類,寫成純靜態類都可以,效果差不多的-_-!)。實現方式主要是單例類自己維護一個靜態自己類對象的引用,而使用這個類的時候通過一個靜態方法獲得那唯一的一個執行個體。代碼見後面的例子。 雙重檢查,為了提高效能而使用的一個小技巧。
Time of Update: 2018-12-04
距第一篇已經過去很長時間了,編輯器和引擎的開發並沒有停止,每周都陸續有新的功能添加進去。在這幾個月的時間裡,wpf介面重新進行了自訂,風格更為簡潔統一,編輯器代碼也進行了重寫,減少了不必要的更新操作。當然大部分時間花在引擎的最佳化和功能增加上,比如模型的眨眼,手持武器時握拳空手時展開,渲染狀態減少等。上幾張最近的編輯器:
Time of Update: 2018-12-04
下面簡單介紹一下重新設計過的編輯器結構,從功能和層次上分主要是這樣的:App, MainWindow:
Time of Update: 2018-12-04
隨著wowmodelviewer支援熊貓人,我也將自己的編輯器增加到了新版本資源的支援,這其中涉及到熊貓人新增加的模型改動,補丁檔案的讀取等,總的來說工作量不大。另外,這期間完成的工作還有: 1. 實現了dx9下固定管線和全shader管線的支援,仿照魔獸的結構寫了相應的shader庫。 2. 重新規划了material的欄位,重新做了material渲染排序 3. 寫了一部分dx11渲染子系統 4. 繼續精簡整個引擎結構,使之簡單易用,符合邏輯
Time of Update: 2018-12-04
最近有關魔獸世界的研究和引擎研究,主要完成了: 1. 地形格式的讀取和二級LOD的實現(魔獸世界的LOD策略),地面小物體的非同步和同步載入,地面小物體的隨距離alpha漸層 2. 地形渲染的貼圖混合shader,雖然還不是最終的效果,沒有高光 3. 建築格式WMO的初步讀取和顯示,對多個貼圖的情況和一些細節還沒有處理 4. 模型啟用alpha狀態時的遮擋處理 5.
Time of Update: 2018-12-04
TIOBE的程式設計語言熱門排行榜如今很火,CSDN月月拿它當頭條。但相信很多人也對其排名和趨勢變化感到驚奇。真有那麼多人用Objective C?真有那麼多人在用C?Javascript使用者竟然會比Perl使用者少?其實,這不過是個資料分析方法問題。不同的方法是可以導致非常不同的結果的。要分析得儘可能正確,還是需要點統計專業知識的。比如這個分析的就更專業一點,其結果可以和indeed job trend以及book selling trend基本一致。 Position Jan
Time of Update: 2018-12-04
# tar -cf all.tar *.jpg 這條命令是將所有.jpg的檔案打成一個名為all.tar的包。-c是表示產生新的包,-f指定包的檔案名稱。# tar -rf all.tar *.gif 這條命令是將所有.gif的檔案增加到all.tar的包裡面去。-r是表示增加檔案的意思。# tar -tf all.tar 這條命令是解出all.tar包中所有檔案,-t是解開的意思# tar -czf all.tar.gz *.jpg
Time of Update: 2018-12-04
這個結果……比預想中晚了很多,不想找太多借口,就是自己的問題,在之後的工作中會儘快盡好的努力改進自己的工作方法和方式。所以,這次不寫什麼“發文祝賀”了…… 技術上說,主要被拖住的地方在幾個方面: 一開始的分塊資料來源儲存導致了巨大的麻煩,而修改為單一資料來源過程中又偏離了預定軌道,浪費了快一周時間。這是血的教訓,以後在設計的時候應儘可能早些把所有可能發生的問題都考慮進去,避免修改所帶來的浪費和士氣的打擊。
Time of Update: 2018-12-04
以下討論只針對應用開發,庫開發的情況有所不同。起初,人們大多在用C,人們討論函數(functions)和編譯單元(compilation unit)。OO(物件導向、對象導向、物件導向)興起後,人們開始認為,全域函數不好,全域變數不好,應該都封裝到類(class)裡。隨著程式越來越大,對象越來越多,人們發現,有很多個物件幾乎要被所有其它的類引用,而且這些對象被四處傳遞,不但囉嗦,而且難於修改。於是,singlton
Time of Update: 2018-12-04
二十年來微軟主宰了PC,但如今形勢已經發生轉變,而且這種轉變是從微軟內部開始的。長話短說,Windows平台Server和Client發展方向明確分離,Server向著雲端服務、Web應用、資料中心靠攏,Client向手機、平板等消費型產品靠攏,PC淪為向後相容的過渡品。對普通使用者,這種轉變不會很快帶來影響,但對軟體開發人員,已經是眼皮底下的事。 Windows 8和Visual Studio
Time of Update: 2018-12-04
如今的大牌遊戲都是動則10G、20G的,build系統已經成了一個創新的新領域。暴雪在GDC2013上就講了他們自主研發的分布式build系統。遊戲的build不只要build程式碼,還包括各種美工資源的預先處理,比如資源提取、校正、格式轉換、組合等。而且這些資源普遍比較大,比如一個紋理圖片的原始圖片檔案就可能有10M,模型的原始檔案比如fbx或collada。Build系統會根據需要從原始資源提煉出不同解析度的版本,以適應不同效能的用戶端,而且各個解析度層級的定位,也會隨著市場的變化而需要調整
Time of Update: 2018-12-04
【李巍(noslopforever·天堂裡的死神)原作,轉載請註明出處】本Blog原來那篇《智能指標三兄弟》:http://blog.csdn.net/noslopforever/archive/2006/12/19/1449569.aspx,在智能指標的使用上,使用了侵入式的設計。欲使用智能指標,則必須為每個使用智能指標的類產生一個static的INVALID對象。如果是自己寫一個庫自己用那大凡沒有問題,但如果用在別人的庫上,這就吃虧了。INVLALID對象的主要作用是:在解引用(*),指向(
Time of Update: 2018-12-04
我先說四句廢話,包括前一句,我的廢話結束,下面是本文。 高效的使用空調在這個空調已經在城市普及的年代,大家都要用到空調的。關於空調的各種討論也非常多,效果,健康,節能,等等。關於空調,空氣調節器,我們都知道哪些?
Time of Update: 2018-12-04
本文連結:原型模式與各種原廠模式,還有反射 各種原廠模式與原型模式相對簡單就不再具體介紹了,只有個小例子,見下。 原型模式與原廠模式實現上的區別主要在於:原型模式的工廠類維護一個產品的原型對象,並在Factory 方法中返回原型對象的複製;而原廠模式則直接返回新的產品對象。 只給出兩種工廠的範例程式碼(C#),先給出產品樣本:abstract class AbstractProduct : ICloneable {// some methodspublic abstract object
Time of Update: 2018-12-04
這兩個都是對應Windows系統的設定。CurrentCulture和數字、時間日期等的格式化相關,和字串比較、排序、大小寫轉換相關。屬於軟體國際化(Globalization)。CurrentUICulture用於選擇介面語言,和介面語言的翻譯相關。屬於軟體本地化(Localization)。兩者經常值相同,但也可不同。比如,可以用英文版WIndows系統,CurrentUICulture就是en-US,但在地區和語言裡選中國的格式,CurrentCulture就是zh-CN。對於WPF,其X
Time of Update: 2018-12-04
這個術語因.NET的Interop(不同技術間互動)而流行。取自部隊等整編列隊集結的本意,引申為對資料格式的重新編排轉換,以便在不同標準的二進位介面間傳遞資料。注意,這個和資料類型轉換不同,資料類型一般並不改變,而只是資料的儲存結構改變,從一個標準的結構轉換成另一個標準的結構。比如.NET的Boolean是1位元組,而Win32是4位元組。專業翻譯詞典上對此含義給出了兩個譯詞:編列、列集。編列是漢語已有詞彙,《漢書》中就有用到,而列集是新造詞,個人覺得用已有詞彙好一點。微軟的MSDN用了另一個譯
Time of Update: 2018-12-04
本文連結:堆與優先順序隊列 (優先順序隊列的完整代碼在最後) 堆,是一個很有意思的資料結構。邏輯結構是樹,一般為二叉樹,每個節點的值都大於(小於)其子樹中的任意節點。也就是說,使用堆結構的數組中,元素是部分有序的。而正是這個特點,使得在堆上,得到最大值(最小值)的時間複雜度為O(1),移除最大值(最小值)、插入元素、改變元素值(或者是刪除位元置已知的元素)的時間複雜度為O(lgn)。另外,用堆結構的排序是一種原地的、時間複雜度為O(nlgn)的排序演算法。 在優先順序隊列前先說一下堆排序。堆排