Вопрос

я использую Любовь2D для написания небольшой игры.Löve2D — игровой движок с открытым исходным кодом для Lua.Проблема, с которой я столкнулся, заключается в том, что некоторый фильтр сглаживания автоматически применяется к вашим спрайтам, когда вы рисуете их в нецелочисленных позициях.

love.graphics.draw( sprite, x, y )

Поэтому, когда x или y не круглые (например, x=100,24), спрайт выглядит размытым.То же самое происходит, когда размер спрайта нечетный, поскольку (x,y) указывает на центр спрайта.Например, спрайт размером 31x30 снова будет выглядеть размытым, поскольку его пиксели нарисованы в нецелочисленных позициях.

Поскольку я использую пиксельную графику, я хочу полностью избежать этого, иначе этот эффект разрушит искусство.Обходной путь, который я использую до сих пор, заключается в том, чтобы заставить координаты быть круглыми, засоряя код вызовами math.floor(), и заставить все спрайты иметь одинаковые размеры, добавив строку или столбец прозрачных пикселей с помощью программы рисования. , если нужно.

Есть ли какая-нибудь команда для отключения сглаживания, которую я могу вызвать при запуске программы?

Это было полезно?

Решение 3

Если кому-то интересно, я спрашивал в других местах и ​​обнаружил, что то, что я прошу, уже запрошено как функция: http://love2d.org/forum/tracker.php?p=2&t=7

Итак, текущая версия Löve, которую я использую (0.5.0), по-прежнему не позволяет отключить фильтр сглаживания, но эта функция уже есть в версии движка SVN.

Другие советы

Если вы отключите сглаживание, вы получите просто сглаживание, отсюда и название!Почему вы рисуете нецелые части и что вы хотите, чтобы они делали с этими дробными частями?(Округлить их до ближайшего значения?Обрезать их?А если они отрицательные?)

Лично я бы оставил графику низкого уровня в покое и изменил ваш код, чтобы использовать средства доступа для x и y, которые выполняют требуемое округление или усечение.Это гарантирует, что ваша пиксельная графика будет нарисована на целочисленных границах, сохраняя при этом сглаживание, которое может вам понадобиться позже.

Другим возможным решением может быть использование math.floor() для округления целых чисел в качестве дешевого обходного пути.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top