Похоже, что эти артефакты возникают из-за отсутствия сглаживания, что отлично подходит для пиксельной графики, но не очень хорошо для векторной графики и вращающихся объектов.
Чтобы включить сглаживание, просто найдите sf::Texture
(s) для каждой части тела и вызовите setSmooth(true)
для каждой.
Официальная документация здесь
Разница заключается в том, как каждый пиксель на экране (или фрагмент ) текстуры будет отображаться, когда координаты текстуры, которые она отображает, попадают между пикселями текстуры (или тексели ).Такое смещение происходит легко, когда вы выполняете масштабирование, дробное перемещение и вращение.
При включенном сглаживании каждый фрагмент визуализируется путем интерполяции нескольких текселей, ближайших к его вычисленным координатам текстуры.Если текстурные координаты фрагмента попадают между текселями, то вы увидите небольшое смешивание.
В противном случае при отключенном сглаживании каждый фрагмент визуализируется просто путем выбора одного текселя, ближайшего к его вычисленным координатам текстуры,и не выполняет интерполяцию.В этом случае, когда координаты текстуры фрагмента попадают между текселями, выбирается просто один или другой тексель.Это приводит к появлению неровных, блочных артефактов вращения, которые вы видите.
Обратите внимание, что для таких вещей, как плотно упакованные листы спрайтов, сглаживание может приводить к эффекту смешения данных соседних текстур в текущий спрайт.