如何以等角投影的形式渲染文本?我理解原理,但我不确定如何以编程方式实际转换 SpriteFont 来执行此操作。
我的意思的例子:
我什至不确定我应该寻找什么。看来我可以通过使用等角投影矩阵和 3D 网格字体来完成此任务,但考虑到我在 2D 中工作,这似乎过于复杂。
有什么想法吗?
最佳答案
SpriteBatch.Begin
采用 Matrix
参数,将您绘制的 Sprite (包括 SpriteFont
)转换到您想要的任何平面上。
不幸的是,Matrix
不提供用于创建倾斜矩阵的 Create*
方法。但手动创建这样的矩阵非常简单。以下代码经过测试,非常接近您想要的:
Matrix skew = Matrix.Identity;
skew.M12 = (float)Math.Tan(MathHelper.ToRadians(36.87f));
Matrix rotate = Matrix.CreateRotationZ(MathHelper.ToRadians(270+26.565f));
sb.Begin(SpriteSortMode.Deferred, null, null, null, null, null, skew * rotate);
// ... draw your sprites here ...
sb.End();
与您的图表的唯一区别是 Y 和 Y' 指向相反的方向,因为 XNA 的 SpriteBatch
在左上角的“客户端”坐标((0,0) 中工作,而 Y+ 是下)。
关于c# - 以 2D 形式渲染等距文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14582025/