hge 的一些細節,通過原始碼可以更加清楚的了解,通過讀原始碼,可以更加高效的使用 hge engine。
必要的第一步:
help classes 層建立於 core functions 層之上,這並不意味著使用者只需要關心 help classes 而忽略 core functions,因此我們需要獲得乙個 hge 指標,來使用 core functions 的函式:
<1> 獲取 hge 指標:
hge* phge = pgecreate(hge_version);
<2> 釋放 hge 指標:
使用之後,需要釋放 hge 指標。
phge->release();
create 和 release 過程使用了引用計數,也就是說,一般來看,除了第一次的 create 呼叫之外幾乎不消耗cpu時間和資源,每呼叫一次 create 函式,引用計數器就加一,只有在第一次呼叫的時候才會真正的分配空間,呼叫 release 會使得引用計數器減一,當它為 0 的時候,才真正是釋放資源。因此以下**是可用的:
while(true)
hge* phge = pgecreate(hge_version); // 確保不是第一次呼叫 pgecreate 函式,因為如果是第一次呼叫,會分配記憶體。
// ... do something
phge->release();
此外,要成對的呼叫 pgecreate 和 release 函式,每次呼叫 release 之後,呼叫它的指標將被賦值為0,例如:
hge* phge = hgecreate(hge_version);
phge->release();
phge->release(); // error: phge == 0
另外,phge->release 會呼叫 phge->system_shutdown();
必要的第二步:
初始化: phge->system_initiate();
初始化語句放在 windows 入口函式中,這個函式將按順序完成
1)視窗類的註冊
2)建立視窗
3)初始化子系統
4)顯示乙個 hge 的 logo(這個東西在 hge 裡面被稱之為 hge splash)
必要的第三步:
呼叫: phge->system_start();
呼叫了 system_start 的目的是開始訊息迴圈,見必要的第二步**
phge->system_start 和 phge->system_shutdown 是成對出現的,處於某些原因,即使我們知道 phge->release 會呼叫 system_shutdown 函式,我們還是應該去顯示的呼叫 system_shutdown 函式。system_shutdown 相比 release 要安全,我們可以這樣呼叫,而不會出錯:
phge->system_start();
// ... something
phge->system_shutdown();
phge->system_shutdown(); // ok
不論如何,create 和 release 成對呼叫,start 和 shutdown 成對呼叫,那麼就不會有問題出現。
還有什麼是需要的?
system_setstate 函式
常常需要設定視窗大小或者是設定為全屏模式,需要設定是否使用聲音等,這一系列操作被稱之為設定系統狀態,統一通過呼叫 phge->system_setstate 函式來完成,最為關鍵的是設定幀函式,呼叫了 phge->system_start 之後,會在繪製每幀影象時呼叫幀函式。
phge->system_setstate(***, ***) 通常可以在如何地方,如何情況下呼叫,不要認為它們只能在 phge->system_initiate 之前呼叫
system_setstate 函式的第乙個引數表示狀態,在內部實現時,它是 f** 的狀態,而第二個引數表示值,通過這個函式,可以繫結狀態和相關的值
補充一下,幀函式必須是乙個全域性函式,而不能是乙個類的成員函式,並且幀函式的原型必須是:
bool funname(void);
慣用法:
我們通常會在程式初始化之前設定狀態,即在 system_initiate 呼叫之前,例如:
int winapi winmain( hinstance hinstance,
hinstance hprevinstance,
lpstr lpcmdline,
int nshowcmd)
{phge->system_setstate(hge_framefunc, framefunc);
phge->system_setstate(hge_windowed, true);
phge->system_setstate(hge_usesound, false);
phge->system_setstate(hge_title, "hge");
phge->system_setstate(hge_showsplash, false); // 用於去除 logo
REDIS系列教材 (二) 執行
步驟 1 執行位置 把redis解壓在了d software下 步驟 2 啟動服務端 通過win r,cmd 執行命令列 然後輸入如下指令 這樣就啟動了服務端 步驟 3 啟動客戶端 通過win r,cmd 執行命令列 然後輸入如下指令 這樣就會如圖所示通過客戶端訪問 redis 伺服器 步驟 4 簡...
HGE系列之二 更上層樓
hge 系列之二 更上層樓 上次頗為感性的描述了一番 hge的輪廓,並給出了乙個世界上最簡單的 hge示例程式,不知讀過的人有了怎樣的認識,如果你說一點感覺都沒有的話 哦,好吧,在此我再重述一番要點便是 1.hge 是一款支援硬體加速的 2d遊戲引擎。2.hge 的有以下優點 l由於 hge構建於 ...
學習經濟學教材系列
現在清華大學本科經濟專業用的教材如下 經濟學原理 經濟學原理 曼昆 經濟思想史 經濟思想史 斯坦利 l 布魯,蘭迪 r 格蘭特 中級巨集觀經濟學 macroeconomics stephen d.williamson 中級微觀經濟學 microeconomics robert s.pindyck,d...