Time of Update: 2018-12-05
我們自己先動手來模仿HGE其鍵盤特殊按鍵訊息響應,其中所涉及到的資料操作含義稍後再介紹。 首先建立基於對話方塊CGetKeyBoardTestDlg的程式,建立一個STATIC控制項ID為IDC_STATIC_CONTENT在對話方塊上面。新增成員 unsigned char kbstate[256]; 和int flag; 在CGetKeyBoardTestDlg.h檔案頭設定宏定義 view plaincopy to clipboardprint?#define HGEINP_SHIFT
Time of Update: 2018-12-05
1,要點首先我覺得D3D紋理映射的選項太多,給人一種眼花繚亂的感覺,而且剛看的時候並不容易分辯不同選項之間的差別,不知道如何使用這些選項,或者說不知道這些選項對應以前經驗中的哪些效果。這些選現包括:Dark mapping Animated Dark mapping Blending with Material Diffuse Color Darkmap with Material Diffuse Color Glow mapping Detail mapping Modulate
Time of Update: 2018-12-05
剛剛搞CEGUI的時候大體看了一下CEGUI。原以為其不支援中文。而且網上很多人都說不支援。。我也就沒有細細看了。當用到Editbox的時候。又不得不用中文。 這時候問題就來了。先是用utf8方式轉換達到中文顯示的目的。可是中文輸入卻不行。網上有一種說法是將兩個位元組連結起來即可。我看了一下編譯器設定,當前使用的是多位元組模式。就不得不這樣做了。不過估計我對C++還不算深。搞了一會,還是失敗了。不過後來在網上有一個朋友說CEGUI本來就支援中文的。但又看到其它人說的,不解其言啊。再後來有一個叫老
Time of Update: 2018-12-05
狂鬱悶ing...昨天寫的東西發出來竟然沒有文字...重新編寫的時候也沒有看到文字...哎狂倒啊,浪費我寫了那麼久.今天還得重來...日..這個CSDN怎麼搞的噢?算了.直接說怎麼搞了,打字累...因為我所說的方法是直接改HGE的核心..所以改動的地方不多,但也不是幾行代碼就行了..步驟是:1:在 hge.h 中添加結構,用於儲存我們的輸入資料.struct hgeIMEEvent{ bool isIME; char value[3];};2:在 hge.h
Time of Update: 2018-12-05
Workshop 10: 動作動作是個特殊的可以附上實體的函數:玩家,電梯,妖怪,武器等等。你可以把動作附上任何實體:模型,精靈,地形。所有的動作在Wed的動作列表的指令碼中建立,就象下面: 來看看函數和動作的區別: 一個動作和一個函數有相似的定義,來看個例子:action add_numbers { b = a + 5; } function add_numbers( ) { b = a + 5; }
Time of Update: 2018-12-05
Workshop 11: 指標指標用來儲存一個物體的引用。來設想一下下面的情形:你想用Acknex引擎建立一個pong的複製: 你想讓左邊的擋板由玩家控制右邊由電腦控制。問題是……在你的代碼中如何說明誰是玩家誰是電腦?答案很簡單:你建立一個指標,這隻是物體的另一個名字。一個典型的指標定義是這樣:entity* the_player; 或者 function* check_status; 或者 string* my_name; 或者 panel* game_over; 或者 bmap*
Time of Update: 2018-12-05
下面是jiangsheng(蔣晟.MSMVP2004Jan)老大的精彩回貼: Knowledge Base Article Q157437: "Fireev.exe Fires Events from a Second Thread" http://support.microsoft.com/support/kb/articles/q157/4/37.asp Knowledge Base Article Q196026: "PRB: Firing
Time of Update: 2018-12-05
直到現在我才知道前邊講的所謂黑暗映射之類的是什麼東西,其實說白了就是使用多重紋理的一種方式。多重紋理從原則上講全部可以被多次渲染所替代,因為多重紋理實際上就是將多次渲染中的每遍中的紋理在一遍中進行操作。因此我們首先介紹一下多次渲染,然後概要介紹一下多重紋理的使用方法和實現的效果。一種複雜的效果往往是無法通過單次渲染來完成的,因此多次渲染實際上非常普遍。在shadow volume演算法中就要通過多次渲染來實現陰影混合。Hook在siggraph1998中提到Quake3使用了10次渲染:1~4
Time of Update: 2018-12-05
//******************************************************* //根據波能資料緩衝區對離屏頁面進行渲染 //******************************************************* void RenderRipple() { //鎖定兩個離屏頁面 DDSURFACEDESC ddsd1, ddsd2; ddsd1.dwSize = sizeof (DDSURFACEDESC); ddsd2.dwSize
Time of Update: 2018-12-05
文章目錄 [譯文]Winsock API實現了一個Tcp伺服器 - for 初學者 [譯文]Winsock API實現了一個Tcp伺服器 - for 初學者作者:hitjinming[譯文] Winsock API實現了一個Tcp伺服器 - for 初學者來源:http://www.codeproject.com/internet/winsockintro01.asp(一)介紹:本文主要採用Winsock
Time of Update: 2018-12-05
不知怎麼的,今天突然想在部落格寫點東西。回頭看看去年翻譯的那些不堪入目的教程,心裡真不是滋味。 去年11月進的公司,到現在也有半年了吧!大四還沒畢業,工資也就那麼點,以後怎麼走?戶口先放學校,看看以後能不能去個好點的地方吧~ 還好這幾天公司買了Wii和乒乓球桌,下班有的玩了。
Time of Update: 2018-12-05
今天閑來沒事看了一下N久就在我電腦裡面的《Effective STL 中文版》。當我看到第43條的時候發現,按上面所講用:演算法替換手工迴圈。不由得產生了疑問。我記得我以前看vector原始碼的時候迴圈效率最高的是operator[]操作(下標操作)。怎麼這裡竟然說是演算法速度快。 下面先做個測試,代碼如下: // 測試類別及其調用函數class AAA{public: void MakeFull2() { }}; // 建立1000000個指標int nCount = 10
Time of Update: 2018-12-05
定時器是參考linux核心定時器設計實現的. 遇到了兩個比較致命而且比較隱形bug. 用了各種方法debug, 看來是確實是代碼寫挫了. bug1: 在後一個時間輪子向前一個時間輪子遷移定時器時步驟: 1. 移除後一個時間輪子頭指標指向的雙向鏈表表頭的定時器. 2. 重新插入該定時器. 3. 重複1, 2直到該雙向鏈表為空白. 問題: 移除的定時器可能會重新插入到當前的雙向鏈表,
Time of Update: 2018-12-05
在繼續為我的畢設奮鬥過程中, 無意但必須的用上了成員函數指標. 文法總覺得有點彆扭但又總是合情合理. 需求: 需要在基類(A)的註冊函數(register_func)裡註冊一個衍生類別B的成員函數(f), 最後在代碼的某個角落通過調用基類(A)的成員函數(call)來調用其衍生類別(B)登入的成員函數(f). 下面是代碼的簡化版: #include <iostream>using namespace std;class A{
Time of Update: 2018-12-05
總覺得, 有時候把一些別人對問題的解決思路應用到其他問題的解決方案中去,就可以算得上創新。 一些很有技巧性的方法總是因某個特定的問題而產生。當吸收了這些方法之後再努力做到條件反射的境界,這樣算不算徹底佔為己有了? 有時候遇到一個難題,絞盡腦汁地想出了個解法或者絞盡腦汁地想不出個解法,然後再去思考下別人的這些方法,或許就會發現一些技巧是怎麼給發明了.
Time of Update: 2018-12-05
今天早上比較閑,折騰了下用bjam編譯luaBind.直接download下來的luabind下是沒有帶bjam的,坑爹的還以為下載的不是完整包. 於是就嘗試了下用boost庫帶的bjam(反正luabind是要依賴boost的).先用boost下的bjam編譯boost, 這個時間比較長,要10到20分鐘左右。build完後,把luabind拷到boost庫目錄下,Jamroot覆蓋掉boost的Jamroot.開啟cmd, 輸入下面命令, boost_path為boost庫的路徑,lua_
Time of Update: 2018-12-05
判斷一個是值是否是2的冪在3D遊戲中常用函數以往的判斷方法是迴圈判斷位或者直接一直迴圈除2.這些方法的效率可想而知. 這裡我用了一種直接位操作進行,效率看代碼就知道.先看代碼:bool Is2Power(int n){ if (n == 1) return false; if ((((~n)&(n-1))+1) == n) return true; return false;}解釋一下(以n=512為例):1.尺寸1不是2的冪2.對 n
Time of Update: 2018-12-05
用HttpURLConnection連網的代碼: HttpURLConnection conn = null; URL url = new URL("http://10.0.0.172/"); conn = (HttpURLConnection) url.openConnection(); conn .setRequestMethod("POST"); conn .setDoInput(true); conn .setDoOutput(
Time of Update: 2018-12-05
Paul Harmon ArchiveVisit the Paul Harmon archive for the complete collection of all past Bottom Line columns. Most companies are blundering into component development without a clear plan. That makes sense, when you consider that senior managers
Time of Update: 2018-12-05
J2ME 項目中修改了下jad檔案中的MIDlet-Name,結果項目就不行了,不管編譯還是打包都出Illegal Manifest Entry Key or Value "MIDlet-Version"這個錯。但是看裡面的內容並未改動MIDlet-Version ,只是改了MIDlet-Name,就怎麼都過不去。svn找出原來的jad覆蓋就又正常了。 就把前後兩個jad用HxD對比了一下,發現改過的jad檔案頭加上了 ef bb bf