本文整理汇总了C++中fvf::TL::transform方法的典型用法代码示例。如果您正苦于以下问题:C++ TL::transform方法的具体用法?C++ TL::transform怎么用?C++ TL::transform使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类fvf::TL
的用法示例。
在下文中一共展示了TL::transform方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Render
void CTLSprite::Render(Fvector &pos, u32 color, float radius, float angle)
{
FVF::TL P;
P.transform (pos, Device.mFullTransform);
if (P.p.w<=0) return;
float cx = Device._x2real(P.p.x);
float cy = Device._y2real(P.p.y);
float sz = (UI->GetRenderWidth()*radius)/P.p.w;
if (sz<1.5f) return;
// Rotation
float _sin1=_sin(angle),_cos1=_cos(angle);
float _sin2=_sin(angle+PI_DIV_2),_cos2=_cos(angle+PI_DIV_2);
mesh.m[0].p.x = cx+sz*_sin1; mesh.m[0].p.y = cy+sz*_cos1;
mesh.m[1].p.x = cx-sz*_sin2; mesh.m[1].p.y = cy-sz*_cos2;
mesh.m[2].p.x = cx+sz*_sin2; mesh.m[2].p.y = cy+sz*_cos2;
mesh.m[3].p.x = cx-sz*_sin1; mesh.m[3].p.y = cy-sz*_cos1;
mesh.setdepth (P.p.z, P.p.w);
mesh.setcolor (color);
DU_impl.DrawPrimitiveTL(D3DPT_TRIANGLESTRIP,2,(FVF::TL*)&mesh,4,false,false);
}
示例2: DrawAxis
void CDrawUtilities::DrawAxis(const Fmatrix& T)
{
_VertexStream* Stream = &RCache.Vertex;
Fvector p[6];
u32 c[6];
// colors
c[0]=c[2]=c[4]=0x00222222; c[1]=0x00FF0000; c[3]=0x0000FF00; c[5]=0x000000FF;
// position
p[0].mad(T.c,T.k,0.25f);
p[1].set(p[0]); p[1].x+=.015f;
p[2].set(p[0]);
p[3].set(p[0]); p[3].y+=.015f;
p[4].set(p[0]);
p[5].set(p[0]); p[5].z+=.015f;
u32 vBase;
FVF::TL* pv = (FVF::TL*)Stream->Lock(6,vs_TL->vb_stride,vBase);
// transform to screen
float dx=-float(Device.dwWidth)/2.2f;
float dy=float(Device.dwHeight)/2.25f;
for (int i=0; i<6; i++,pv++){
pv->color = c[i]; pv->transform(p[i],Device.mFullTransform);
pv->p.set((float)iFloor(_x2real(pv->p.x)+dx),(float)iFloor(_y2real(pv->p.y)+dy),0,1);
p[i].set(pv->p.x,pv->p.y,0);
}
// unlock VB and Render it as triangle list
Stream->Unlock(6,vs_TL->vb_stride);
DU_DRAW_RS(D3DRS_SHADEMODE,D3DSHADE_GOURAUD);
DU_DRAW_SH(dxRenderDeviceRender::Instance().m_WireShader);
DU_DRAW_DP(D3DPT_LINELIST,vs_TL,vBase,3);
DU_DRAW_RS(D3DRS_SHADEMODE,SHADE_MODE);
m_Font->SetColor(0xFF909090);
m_Font->Out(p[1].x,p[1].y,"x");
m_Font->Out(p[3].x,p[3].y,"y");
m_Font->Out(p[5].x,p[5].y,"z");
m_Font->SetColor(0xFF000000);
m_Font->Out(p[1].x-1,p[1].y-1,"x");
m_Font->Out(p[3].x-1,p[3].y-1,"y");
m_Font->Out(p[5].x-1,p[5].y-1,"z");
}
示例3: Render
void CHUDTarget::Render()
{
VERIFY (g_bRendering);
CObject* O = Level().CurrentEntity();
if (0==O) return;
CEntity* E = smart_cast<CEntity*>(O);
if (0==E) return;
Fvector p1 = Device.vCameraPosition;
Fvector dir = Device.vCameraDirection;
// Render cursor
u32 C = C_DEFAULT;
FVF::TL PT;
Fvector p2;
p2.mad (p1,dir,RQ.range);
PT.transform (p2,Device.mFullTransform);
float di_size = C_SIZE/powf(PT.p.w,.2f);
CGameFont* F = HUD().Font().pFontGraffiti19Russian;
F->SetAligment (CGameFont::alCenter);
F->OutSetI (0.f,0.05f);
if (psHUD_Flags.test(HUD_CROSSHAIR_DIST)){
F->SetColor (C);
F->OutNext ("%4.1f",RQ.range);
}
if (psHUD_Flags.test(HUD_INFO)){
if (RQ.O){
CEntityAlive* E = smart_cast<CEntityAlive*> (RQ.O);
CEntityAlive* pCurEnt = smart_cast<CEntityAlive*> (Level().CurrentEntity());
PIItem l_pI = smart_cast<PIItem> (RQ.O);
if (IsGameTypeSingle())
{
CInventoryOwner* our_inv_owner = smart_cast<CInventoryOwner*>(pCurEnt);
if (E && E->g_Alive() && !E->cast_base_monster())
{
//. CInventoryOwner* our_inv_owner = smart_cast<CInventoryOwner*>(pCurEnt);
CInventoryOwner* others_inv_owner = smart_cast<CInventoryOwner*>(E);
if(our_inv_owner && others_inv_owner){
switch(RELATION_REGISTRY().GetRelationType(others_inv_owner, our_inv_owner))
{
case ALife::eRelationTypeEnemy:
C = C_ON_ENEMY; break;
case ALife::eRelationTypeNeutral:
C = C_ON_NEUTRAL; break;
case ALife::eRelationTypeFriend:
C = C_ON_FRIEND; break;
}
if (fuzzyShowInfo>0.5f){
CStringTable strtbl ;
F->SetColor (subst_alpha(C,u8(iFloor(255.f*(fuzzyShowInfo-0.5f)*2.f))));
F->OutNext ("%s", *strtbl.translate(others_inv_owner->Name()) );
F->OutNext ("%s", *strtbl.translate(others_inv_owner->CharacterInfo().Community().id()) );
}
}
fuzzyShowInfo += SHOW_INFO_SPEED*Device.fTimeDelta;
}
else
if (l_pI && our_inv_owner && RQ.range < 2.0f*our_inv_owner->inventory().GetTakeDist())
{
if (fuzzyShowInfo>0.5f){
F->SetColor (subst_alpha(C,u8(iFloor(255.f*(fuzzyShowInfo-0.5f)*2.f))));
F->OutNext ("%s",l_pI->Name/*Complex*/());
}
fuzzyShowInfo += SHOW_INFO_SPEED*Device.fTimeDelta;
}
}
else
{
if (E && (E->GetfHealth()>0))
{
if (pCurEnt && GameID() == GAME_SINGLE){
if (GameID() == GAME_DEATHMATCH) C = C_ON_ENEMY;
else{
if (E->g_Team() != pCurEnt->g_Team()) C = C_ON_ENEMY;
else C = C_ON_FRIEND;
};
if (RQ.range >= recon_mindist() && RQ.range <= recon_maxdist()){
float ddist = (RQ.range - recon_mindist())/(recon_maxdist() - recon_mindist());
float dspeed = recon_minspeed() + (recon_maxspeed() - recon_minspeed())*ddist;
fuzzyShowInfo += Device.fTimeDelta/dspeed;
}else{
if (RQ.range < recon_mindist()) fuzzyShowInfo += recon_minspeed()*Device.fTimeDelta;
else fuzzyShowInfo = 0;
};
if (fuzzyShowInfo>0.5f){
clamp(fuzzyShowInfo,0.f,1.f);
int alpha_C = iFloor(255.f*(fuzzyShowInfo-0.5f)*2.f);
u8 alpha_b = u8(alpha_C & 0x00ff);
F->SetColor (subst_alpha(C,alpha_b));
//.........这里部分代码省略.........