使用
由于这是仅限 Windows 应用程序(不打算移植),我将可以像在普通的 WinForms 应用程序中那样访问所有字体,并且我相信使用
此外,性能似乎可能更好,因为
1. 是否有我没有注意到的问题或不利影响?
2. 是否可以使用精灵字体获得 alpha 混合文本?我看到 Nuclex 框架被提到过,但据我所知,它还没有被移植到 Monogame。
更新:
从技术方面来看,它似乎完美运行,比通过精灵字体渲染文本要好得多。如果它们水平渲染,我甚至可以获得 ClearType。可能存在的一个问题是,字体的精灵表(spritesheets)在纹理内存方面更有效率,而不是为每一页文本创建单独的纹理。
Graphics.DrawString
渲染静态文本至离屏位图,转换为一个 Texture2D
,然后简单调用 SpriteBatch.Draw
以代替使用内容管道和 SpriteFont
渲染文本,是否存在任何不利影响?这基本上是在“纸张”上绘制一整页文本,但用户也可以选择调整字体大小,这意味着我需要包含不同尺寸的 spritefonts。由于这是仅限 Windows 应用程序(不打算移植),我将可以像在普通的 WinForms 应用程序中那样访问所有字体,并且我相信使用
Graphics.DrawString
(甚至是 TextRenderer
)进行渲染时,渲染质量会比使用精灵字体更好。此外,性能似乎可能更好,因为
SpriteBatch.DrawString
需要在每次迭代中“渲染”整个文本(即为每个字母单独发送顶点),而通过使用位图,我只需执行一次,因此在 CPU 方面应该稍微减轻了一些工作量。1. 是否有我没有注意到的问题或不利影响?
2. 是否可以使用精灵字体获得 alpha 混合文本?我看到 Nuclex 框架被提到过,但据我所知,它还没有被移植到 Monogame。
更新:
从技术方面来看,它似乎完美运行,比通过精灵字体渲染文本要好得多。如果它们水平渲染,我甚至可以获得 ClearType。可能存在的一个问题是,字体的精灵表(spritesheets)在纹理内存方面更有效率,而不是为每一页文本创建单独的纹理。