HGE教程翻译(4)

来源:互联网 发布:unity3d就业前景 编辑:程序博客网 时间:2024/06/11 19:59
 

Tutorial 04 – 渲染纹理

 

首先我们声明渲染对象的句柄和配合使用的精灵。

 

hgeSprite*   tar;
 
HTARGET      target;

 

在一些事件期间,如视频模式选择,渲染对象的纹理句柄可能改变。所以我们在获得新的渲染目标的纹理时写GfxRestoreFunc函数。

 

bool GfxRestoreFunc()
{
  if(tar && target)
       tar->SetTexture(hge->Target_GetTexture(target));
 
  return false;
}

 

RenderFunc中我们首先渲染所有的素材到纹理,在Gfx_BeginScene中详细指定渲染对象。

 

  hge->Gfx_BeginScene(target);
  hge->Gfx_Clear(0);
  par->Render();
  spr->Render(x, y);
  hge->Gfx_EndScene();

 

接着渲染一些纹理的示例到屏幕。

 

  hge->Gfx_BeginScene();
  hge->Gfx_Clear(0);
 
  for(i=0;i<6;i++)
  {
    tar->SetColor(0xFFFFFF | (((5-i)*40+55)<<24));
    tar->RenderEx(i*100.0f, i*50.0f, i*M_PI/8, 1.0f-i*0.1f);
  }
 
  fnt->printf(5, 5 ,HGETEXT_LEFT, "dt:%.3f/nFPS:%d",
              hge->Timer_GetDelta(), hge->Timer_GetFPS());
  hge->Gfx_EndScene();

 

WinMain中配置自己的GfxRestoreFunc函数。

 

  hge->System_SetState(HGE_GFXRESTOREFUNC, GfxRestoreFunc);

 

HGE初始化后,我们创建渲染对象和一个精灵,用创建的纹理渲染时容易点。

 

    target=hge->Target_Create(512,512,false);
 
    tar=new hgeSprite(
           hge->Target_GetTexture(target),0,0,512,512);
    tar->SetBlendMode(
           BLEND_COLORMUL | BLEND_ALPHAADD | BLEND_NOZWRITE);

 

程序关闭时我们删除精灵以及对象。

 

    delete tar;
    hge->Target_Free(target);

 

结束标识和前面的教程一样。