本文整理汇总了C++中Matrix4x4f::Transform方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix4x4f::Transform方法的具体用法?C++ Matrix4x4f::Transform怎么用?C++ Matrix4x4f::Transform使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix4x4f
的用法示例。
在下文中一共展示了Matrix4x4f::Transform方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Update
void ISprite::Update(f32 delta)
{
//IBasicMesh::Update(delta);
if (bPlaying && bAnimation)
{
fFrameTime += delta;
if (fFrameTime > fCurrentFrameRate)
{
fFrameTime -= fCurrentFrameRate;
if (iCurrentFrame + 1 == iFrames)
{
if (bLoop)
{
iCurrentFrame = 0;
}
else
{
bChanged = FALSE;
}
}
else
iCurrentFrame++;
u32 oldId = pFrame->iFileId;
pFrame = &pAnimationFrames[iCurrentFrame];
if (oldId != pFrame->iFileId)
{
sRelease(pFrameImage);
pFrameImage = static_cast<ITexture *>(pRes->Get(_F(pFrame->iFileId), Seed::ObjectTexture, pPool));
}
this->ReconfigureFrame();
}
}
if (!bChanged && !this->IsChanged())
return;
uPixel p = iColor;
p.rgba.r = iColor.argb.r;
p.rgba.g = iColor.argb.g;
p.rgba.b = iColor.argb.b;
p.rgba.a = iColor.argb.a;
if (!arCustomVertexData)
{
arCurrentVertexData = &vert[0];
vert[0].cVertex = Vector3f(-fAspectHalfWidth, -fAspectHalfHeight, (f32)iPriority);
vert[0].iColor = p;
vert[0].cCoords = Point2f(fTexS0, fTexT0);
vert[1].cVertex = Vector3f(+fAspectHalfWidth, -fAspectHalfHeight, (f32)iPriority);
vert[1].iColor = p;
vert[1].cCoords = Point2f(fTexS1, fTexT0);
vert[2].cVertex = Vector3f(-fAspectHalfWidth, +fAspectHalfHeight, (f32)iPriority);
vert[2].iColor = p;
vert[2].cCoords = Point2f(fTexS0, fTexT1);
vert[3].cVertex = Vector3f(+fAspectHalfWidth, +fAspectHalfHeight, (f32)iPriority);
vert[3].iColor = p;
vert[3].cCoords = Point2f(fTexS1, fTexT1);
}
else
{
arCurrentVertexData = arCustomVertexData;
}
f32 ratio = pScreen->GetAspectRatio();
f32 x = fAspectHalfWidth + ISprite::GetX();
f32 y = fAspectHalfHeight + ISprite::GetY() * ratio;
f32 lx = ISprite::GetLocalX();
f32 ly = ISprite::GetLocalY() * ratio;
Matrix4x4f t1, t2, r, s;
t1 = TranslationMatrix(lx + x, ly + y, 0.0f);
r = RotationMatrix(AxisZ, DegToRad(ISprite::GetRotation()));
s = ScaleMatrix(ISprite::GetScaleX(), ISprite::GetScaleY(), 1.0f);
t2 = TranslationMatrix(-lx, -ly, 0.0f);
Matrix4x4f transform = ((t1 * r) * s) * t2;
if (bTransformationChanged || !arCustomVertexData)
{
for (u32 i = 0; i < iNumVertices; i++)
{
transform.Transform(arCurrentVertexData[i].cVertex);
}
}
bChanged = FALSE;
bTransformationChanged = FALSE;
}