閱讀147 返回首頁    go 技術社區[雲棲]


HGE 係列教材(7) --- 使用 Helper Classes

字體的使用:

1. 頭文件

#include <hgeFont.h>

2. 載入字體

hgeFont* pFont;

pFont = new hgeFont("font1.fnt");   // 不要忘記 delete

fnt 文件是一個字體描述文件(font description file),可以通過創作工具產生

3. 打印字體

pFont->printf(5, 5,
    HGETEXT_LEFT,
    "dt:%.3f/nFPS:%d (constant)",   // 使用中文將出現“??”
    pHGE->Timer_GetDelta(),
    pHGE->Timer_GetFPS()

);

在渲染函數中打印文字,HGE 到目前版本 1.81 依然不支持中文,隻能使用第三方支持。建議使用微妙的平衡(BOGY)提供的解決方案。

 

粒子係統的使用:

1. 建立一個 hgeSprite 對象,hgeSprite 類的構造函數如下:

hgeSprite(
HTEXTURE tex,   // 紋理的句柄
float x,   // sprite 對應的紋理的 x 坐標
float y,   // sprite 對應的紋理的 y 坐標(區別於頂點中的紋理坐標,這裏無需規格化坐標間隔)
float w,   // sprite 的寬
float h   // sprite 的高
);

注意,sprite 對應的紋理的坐標,是 sprite 的左上的坐標。由此可見,一個精靈對應了紋理中的一個四邊形區域,實際的源碼中,sprite 類含有一個 hgeQuad 成員變量。

如果 tex 為 0,那麼就使用白色作為紋理的數據(texture data)

hgeSprite* pSpt = new hgeSprite(tex, 32, 32, 32, 32);

2. 設置混合模式,根據情況設置混合模式,後麵詳細討論:

pSpt->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE); // 建議使用 BLEND_ALPHAADD,這樣看起來效果會好很多(增亮)。

3. 設置錨點(似乎和函數名字有點不符)

void SetHotSpot(
float x,   // 錨點的 x 坐標
float y   // 錨點的 y 坐標
);

錨點是這樣的一個點:進行一些操作的中心點。例如進行旋轉操作的中心點,即旋轉操作依賴於這個點。通常設置 sprite 的中心點為錨點。

4. 關聯 hgeParticleSystem

pPar = new hgeParticleSystem("trail.psi", m_pSpt);    // 關聯 hgeParticleSystem

psi 文件被稱之為粒子係統描述文件(particle system description file),這個文件是 hgeParticleSystemInfo 結構對象的硬盤鏡像,這裏不做詳細介紹。

5. 粒子係統中的基本參數介紹:

係統生命周期(System lifetime):粒子係統的生命周期,在這個周期內會產生新粒子

Emission:每秒產生多少個新的粒子

粒子生命周期(Particle lifetime):特定的某個粒子的生命周期

6. 設定 Emission:

pPar->info.nEmission=10;

7. 調用 Fire 函數

pPar->Fire() 函數會重啟粒子係統,但它不會影響當前活躍粒子

8. 渲染

pPar->Render();

9. MoveTo 函數

pPar->MoveTo(x, y); 用於移動粒子係統到(x,y)處

10. Update 函數

pPar->Update(m_pHGE->Timer_GetDelta());

在幀函數中應該調用 Update 且使用參數為 m_pHGE->Timer_GetDelta()

 

使用 hgeSprite 渲染:

前麵說了為了渲染,使用了 hgeQuad,那樣做是複雜的,我們完全可以使用 sprite 來實現,而不需要使用到過多的 Core Functions 層的函數。

1. 創建 sprite

pSpt = new hgeSprite(tex, 96, 64, 32, 32);

2. 設置顏色

pSpr->SetColor(0xFFFFA000);

SetColor 函數將為 sprite 添加顏色,添加的方式由混合模式決定,設置混合模式,通過調用函數 pSpr->SetBlendMode 實現。

注意,這裏設置的顏色是 sprite 中 hgeQuad 對象的頂點的顏色,四個頂點顏色將設為相同,而混合模式設置的是 sprite 中的 hgeQuad 對象的 blend 值。

pSpr->SetBlendMode(BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE); // 這裏使用的紋理是 alpha 通道漸變,顏色為白色的紋理,因此會使用到 BLEND_COLORMUL,這點在《HGE 係列教材(5) --- 輸入、聲音和渲染》做了詳細的說明

3. 設置錨點:

pSpr->SetHotSpot(16, 16);

4. 渲染

在渲染函數中,調用 pSpr->Render(x, y); 方可

最後更新:2017-04-02 06:51:29

  上一篇:go SQl 語句(常見) 新建,刪除,修改表結構(轉載)
  下一篇:go HGE 係列教材(9) --- GUI(本文未完成)