【发布时间】:2023-09-20 01:30:01
【问题描述】:
使用Graphics.DrawString 将一堆(相当静态的)文本渲染到屏幕外位图,将其转换为Texture2D 一次,然后简单地调用SpriteBatch.Draw,而不是使用内容管道,有什么缺点吗?并使用SpriteFont 渲染文本?这基本上是一页文本,绘制在“一张纸”上,但用户也可以选择调整字体大小,所以这意味着我必须包含不同大小的 spritefonts。
由于这是一个仅限 Windows 的应用程序(不打算移植它),我将可以访问所有字体,就像在普通的旧 WinForms 应用程序中一样,我相信使用Graphics.DrawString(甚至TextRenderer) 比使用精灵字体。
此外,似乎性能可能会更好,因为SpriteBatch.DrawString 需要在每次迭代中“渲染”整个文本(即分别发送每个字母的顶点),而通过使用位图我只做一次,所以它应该CPU 方面的工作量会稍微少一些。
- 有没有我在这里没有看到的问题或缺点?
- 是否可以使用 spritefonts 获得 alpha 混合文本?我看过周围提到的 Nuclex 框架,但它没有被移植到 Monogame AFAIK。
[更新]
从技术方面来说,它似乎工作得很好,文本渲染比通过 sprite 字体好得多。如果它们是水平渲染的,我什至会得到 ClearType。可能存在的一个问题是字体精灵表(可能是?)在纹理内存方面比为一页文本创建单独的纹理更有效。
【问题讨论】:
标签: monogame drawstring spritebatch spritefont