【问题标题】:Context based transformation will be remembered means in marmalade sdk基于上下文的转换将在 marmalade sdk 中被记住
【发布时间】:2012-11-06 09:53:33
【问题描述】:
我是marmalade sdk的新人,我关注this tutorial,我读了这段
*这里我们告诉 Iw2D 设置绘制“任何东西”时使用的“当前”变换。请记住,Iw2D 是基于上下文的,并且会记住此变换,因此如果您尝试在不再次更改变换的情况下绘制其他内容,那么它将以相同的位置、相同的角度和相同的比例绘制。请注意,您可以使用 Iw2DSetTransformMatrix(CIwMat2D::g_Identity) 将当前变换重置为正常。单位矩阵是没有旋转、没有平移和没有缩放的默认变换矩阵。*
我很困惑这条线是什么意思>>Iw2D 是基于上下文的,并且这种转换会被记住,有什么可爱的想法吗?您的帮助将不胜感激。
【问题讨论】:
标签:
c++
sdk
game-engine
marmalade
【解决方案1】:
从来没有听说过果酱(除了早餐——而且它的变形也很粘),但总的来说:
变换描述了在渲染之前应用于所有坐标的几何变换。因此,如果您绘制水平线,并指定 45° 旋转作为变换,则该线将以 45° 角呈现。
基于上下文意味着转换“坚持”直到您重置(= 将其替换为“身份转换”)或修改它。
【解决方案2】:
在 Marmalade 中,您可以在每一帧中设置当前变换矩阵,然后将其重置为 Identity。否则,您可以设置一次变换矩阵并将其应用于所有未来的渲染/绘图。
当您调用Iw2DDrawImage() 或Iw2DDrawRect() 或任何其他Iw2DDraw 函数时,绘图将基于当前变换矩阵。因此,如果您在特定图形上设置了 45 度的旋转,则下一张图形将旋转到 45 度,除非您再次重置它,缩放和其他转换也是如此。所以如果你想避免这种情况,调用Iw2DSetTransformMatrix()函数并在当前帧使用结束后将其设置为单位矩阵。