Як отримати красивий невеликий текст у XNA без використання зовнішніх бібліотек?


13

У XNA технологія spritefont жахлива. Nuclex робить цю роботу набагато краще, але я не хочу мати жодних зовнішніх посилань, і я майже завершив свою гру.

При використанні шрифтів, таких як Sansation або Quicksand, це виглядає жахливо в менших розмірах шрифтів. Це так погано!

Чи існує відоме рішення для цього? Я спробував встановити розміри шрифтів на надзвичайно високі, а потім змінити їх в spritebatch без удачі.


Я використовую SpriteFont для створення своїх шрифтів для XNA, у вас є велика гнучкість. Я також переконуюсь, що позиція шрифту є цілим числом, щоб не виникало неприємного антиалізингу, але це, мабуть, не чудове рішення. Ви можете спробувати фільтрування точок і в текстових викликах Spritebatch.
Джонатан Коннелл

Не забудьте протестувати свої невеликі шрифти на різних реальних пристроях та людях. Якщо це заголовок 360 і, таким чином, націлений на телевізори, розміри всіх візуальних елементів, як правило, повинні бути трохи більшими, ніж на екрані ПК.
Ларс Віклунд

Я роблю гру на ПК, а розмір шрифту встановлюється на ціле число.
Mathias Lykkegaard Lorenzen

1
Не масштабуйте тексти, створюйте spritefont під потрібний розмір.
Wouter

1
Тут ще кілька правил для вас. Закріпіть вектор позиції до цілих чисел перед рендерінгом, інакше вибірки зроблять ваш вихідний текст сміттям . Можливо, варто змінити пробник текстури на пункт / найближчий сусід, перш ніж надати текст. Особливо, якщо ваш шрифт не піксельний :)
Cubed2D

Відповіді:



13

Процесор шрифтів спрайтів XNA використовує стиснення DXT3, яке не працює добре з новою попередньо множиною альфа в XNA 4.0. Звідси нестабільний вигляд тексту.

Процесор шрифту Nuclex sprite видає абсолютно ті самі дані, за винятком того, що внутрішній, Texture2Dякий містить дані растрових зображень шрифту, не стискається - значить, у нього немає проблем з якістю.

Оскільки дані з процесора Nuclex мають однаковий формат, SpriteFontзчитувач XNA може їх читати, і вам не потрібно включати будь-які бібліотеки Nuclex для розповсюдження з вашою грою.

(Це також зручно дозволяє використовувати той самий формат XML, що і шрифти спорідненого спрайту XNA.)

Якщо говорити: у поєднанні зовнішніх бібліотек з вашою грою немає нічого поганого. Це не так, як вони встановлюються у вашій системі чи що-небудь інше. (Ви могли б навіть зайти так далеко, щоб об'єднати дві збірки).

І те саме стосується коду (наприклад, якщо ви переживаєте про контроль версій). Ви можете просто ввести Nuclex.Fonts.Content.TrueTypeImporter.dllсвій вихідний код. Насправді це не велика справа.


9

Ви можете використовувати піксельні шрифти :

pf tempesta варіант

Якщо ви використовуєте піксельний шрифт у розмірі шрифту, для якого він був розроблений (або цілий множина його, наприклад, 2x, 3x, 4x), вам гарантується ідеальний піксельний текст, який не потребує антизбудження. Це означає, що вам ніколи не доводиться стикатися з жахливим антизбудженням, яке робить спрайтові шрифти XNA та Nuclex набагато кращими. ( Ця стаття вивчає цю проблему та порівнює їх)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.