顯示具有 Programming 標籤的文章。 顯示所有文章
顯示具有 Programming 標籤的文章。 顯示所有文章

2010年6月16日 星期三

memo

System.currentTimeMillis()
This method shouldn't be used for measuring timeouts or other elapsed time measurements, as changing the system time can affect the results

System.nanoTime()
This timestamp can only be used to measure an elapsed period by comparing it against another timestamp. It cannot be used as a very exact system time expression

2007年7月27日 星期五

..突然興起弄了一堆仿mac的風格XD

嗯...

其實之前去實驗室.. 也看到學長都在使用ObjectDock..

所以.. 突然一時興趣就抓了回來用.. = =||

(當然有很多款 不知道是不是這個 不過我是用ObjectDock)

把常用的程式連結加了進去之後..

目前的桌面狀況是這樣低~




桌布也順便換了~ 桌布版沒看到比較好看的 這一張是算不錯的了 Orz

另外也覺得MAC的Expose功能還不錯..

在使用Ubuntu時覺得頗好用的... 所以稍微找了一下windows上可以使用expose的軟體

發現有一套還不錯用~ WinExpose

順便附上下載網址 有興趣的可以試用看看.. XD

http://www.matiasmoreno.com.ar/winexpose/#download

下面是Expose時的圖~ 移過去時還會有移動的動畫 ... 整体來說還不錯~
(有人是說顯卡不要太差.. 主要是用硬体+DirectX來處理 也可以選擇Software or OpenGL 但DirectX的支援做的比較好 可惜不支援中文的樣子)



好久沒換風格了.. 換換有益身心健康 .. XD

2007年7月25日 星期三

Windows Form上使用OpenGL

環境: VC++ 2005

原本要試著在windows form上加入opengl的程式

結果一開始居然出現找不到include file 'windows.h'

真是神奇啊 ... 最基本的Windows SDK居然沒附在上面... = =||

直接把VC6的include檔加入又會出現更多的錯誤.... 囧

上網找了好久

總算是找到了解決方法.. = =||

原來2005上面還要另外灌Microsoft Platform SDK才可以用Windows SDK

安裝教學網址

灌好之後總算可以編過了..

從codeproject抓回來的範例中..

3D場景是整個render在視窗上面..

為了要改成只render到panel上面.. 也花了一點時間找code ...

傳入的參數是System::Windows::Forms::Form...

再將此參數的handle丟給opengl... opengl就能夠利用此來render到整個form上..

至於要render到panel上的話.. 反正panel也是視窗物件 .. 想必一定也有handle

所以將傳入的參數型態改為System::Windows::Forms::Panel...

果然就沒問題了~ opengl可以畫在panel上了

不過windows form還真是神奇的東西... 或許應該說是M$做的新型C++真是神奇的東西..

多了一個^ 其作用似乎是類似指標的東西..

是不是也提供了自動回收的功用咧(好像好久前看programming版看到?)

找個時間來找點資料閱讀一下好了~~

2007年3月30日 星期五

(書名)遊戲之旅-我的程式設計感悟 - 組合語言優化 part1

遊戲之旅-我的程式設計感悟
作者為大陸人雲風
此書的內容在於作者寫遊戲之來的心得及技術經驗
對於遊戲設計初心者來說是蠻不錯的一本書
有興趣的人可以去找來看看~

題外話:淡江的圖書館真的蠻好的~ 這本書也算是蠻新的一本 我是第一個借閱的.. XD

來談談此一章節前面的心得吧
6.2.2 低效率的靜態變數
對於靜態變數及區域變數 你認為哪一個的效率會比較好?
或許有人認為區域變數在用到時才被分配出來
而靜態變數是一開始就分配好的 理所當然靜態變數的效率較好
當然這個想法是錯誤的
區域變數是存在系統堆疊上的 在分配上僅僅是一行指令(修改esp暫存器)即可實現
(一組區域變數的宣告只做一次 而非一個變數一次)
將變數放在堆疊中 其最大的好處是 函數能夠重複使用記憶体
在目前的函式退出後,記憶体空間被回收,又再進入新的函式時
又會再次使用相同位址的記憶体
而當同一塊的記憶体被使用時,修過OS的人就知道
其資料會被存放到CPU的L1 cache中,所以存取的速度相當快
在大部分的情況之下,存取堆疊頂部的資料都符合此一條件
相較之下靜態變數就沒有此一優點。
在CPU與MEM做交換資料的同時,往往成為程式的速度瓶頸。

同樣的道理,臨時建構一個物件,如果使用系統提供的new operator
則會間接呼叫了malloc而導致較低效率的操作
較好的方法則是使用placement new,而改用alloca在堆疊中分配物件所需的空間
並且在退出函式時直接呼叫物件的解構子 而非使用delete
使函式在退出時的堆疊操作自動回收記憶體

總之 不論在設計角度或是在於效率角度 靜態變數的使用應該僅量避免

這一篇就到這邊結尾吧~~