Большое сообщество Wiki of AndEngine Artifacts
Спрайтовые артефакты
БИЛИНЕЙНАЯ фильтрация интерполирует цвет ближайших четырех пикселей, что делает текстуру приятной при масштабировании / повороте или смещении с нецелым числомзначений, но имеет некоторые трудности.
Артефакт черной или темной линии
Фон атласа текстуры, возможно, черный, и краевые пиксели texregion смешиваются с этим фоном.Используйте собственный прозрачный текстурный атлас или модифицированный конструктор TextureAtlas, который заполняется прозрачностью (TODO найти ссылку на форум, где это описано)
У края спрайта есть нежелательная альфа
Если фон текстурыпрозрачен, альфа все еще смешивается с краями.Добавьте 1-пиксельное выдавливание к своей области текстуры (повторите краевые пиксели в дополнительной строке / столбце по краям) и поместите края своей области между исходным и добавленным краевыми пикселями.Это гарантирует, что билинейная интерполяция выберет только пиксели из вашей области.
Другой артефакт края
Если области текстуры расположены слишком близко, край области может занять несколько пикселей от края других областей.Используйте отступы между областями текстуры.
Текстовые артефакты
Небольшая вертикальная линия под базовой линией (GLES1)
В моем шрифте символ J
имел чрезмерно левыйрасширение нижней кривой, которая вызывает небольшой артефакт при рендеринге буквы I
, поскольку IJ
находятся рядом друг с другом в текстуре и, возможно, слишком близко.
Попробуйте уменьшить размер шрифта, увеличив текстуруразмер или взлом в большем Font.PADDING
значении (5
работало для меня вместо 1
).Однако обратите внимание, что по умолчанию увеличение PADDING
также увеличивает межстрочный интервал, что может быть нежелательным.Новый YPADDING
может быть введен и использован там, где это необходимо для компенсации.
Исчезающие буквы
Буквы отображаются по запросу в текстурном атласе шрифта.Это может привести к нехватке места на текстурном атласе, что приведет к забавным эффектам (см. Dissapearing ChangeableText ).
Одним из решений может быть вставка этого фрагмента в метод Font#createLetter(char)
:
if (this.mCurrentTextureY + letterHeight > textureHeight) {
throw new IllegalStateException("Could not allocate space for letter " + pCharacter + " on texture. " +
"Please enlarge the texture atlas size. This would be letter #" + this.mLetterCount);
}