Есть ли недостаток в использовании Graphics.DrawString
для рендеринга (довольно статического) куча текста в off-screen растровое изображение, конвертировать его в Texture2D
один раз, а затем просто вызывать SpriteBatch.Draw
вместо использования конвейера контента и рендеринг текста с помощью SpriteFont
? Это, в основном, страница текста, нарисованная на "листе бумаги", но пользователь также может изменить размер шрифтов, поэтому это означает, что мне нужно будет включать spritefonts разных размеров.
Поскольку это приложение только для Windows (не планируя его переносить), у меня будет доступ ко всем шрифтам, как в обычном старом приложении WinForms, и я считаю, что качество рендеринга будет намного лучше при использовании Graphics.DrawString
(или даже TextRenderer
), чем использование шрифтов спрайтов.
Кроме того, кажется, что производительность может быть лучше, так как SpriteBatch.DrawString
должен "визуализировать" весь текст на каждой итерации (т.е. отправлять вершины для каждой буквы отдельно), а при использовании растрового изображения я делаю это только один раз, поэтому он должен немного меньше работать на стороне процессора.
- Есть ли какие-либо проблемы или недостатки, которые я не вижу здесь?
- Можно ли получить альфа-смешанный текст с помощью spritefonts? Я видел, что Nuclex Framework упоминается вокруг, но он не был перенесен в Monogame AFAIK.
[Обновление]
С технической стороны кажется, что он работает отлично, гораздо лучше, чем через шрифты спрайтов. Если они отображаются горизонтально, я даже получаю ClearType. Одна из проблем, которая может существовать, заключается в том, что spritesheets для шрифтов (может быть?) Более эффективен с точки зрения памяти текстур, чем создание отдельной текстуры для страницы текста.