Ошибка в Libgdx Spritebatch - PullRequest
       13

Ошибка в Libgdx Spritebatch

0 голосов
/ 24 сентября 2018

Однако, у меня есть странная проблема, когда я рисую, кажется, что внешние 1px изображения растянуты, чтобы соответствовать прямоугольнику, но внутренняя часть только растянута, я рисовал до 48x48 плиток, но нарисовал 500x500плитка, чтобы показать проблему.[500x500 хорошо рисует] худшая часть, кажется, выбирает, когда растягивать, а не растягивать.а также что растянуть.извините, это трудно объяснить, но я прикрепил изображение, которое, я надеюсь, делает лучше.enter image description here это может быть просто неправильное понимание, как использовать рисование с помощью spritebatch edit: плитка 48x48, а не 64x64, я только что работал весь день.

1 Ответ

0 голосов
/ 24 сентября 2018

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

texture.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);

Если вы используете texturepacker, вы можете сделать это за один раз, изменив его настройки.

texturePackerSetting.filterMin = Texture.TextureFilter.Linear;
texturePackerSetting.filterMag = Texture.TextureFilter.Linear;

Или вы можете отредактировать сам файл атласа, изменив параметр фильтра на:

filter: Linear,Linear

Очевидно, что это стоит больше энергии, поскольку для каждого пикселя, который вы рисуете на экране, требуется больше вычислений, но я бы не волновалсяоб этом, пока ваш рисунок не станет узким местом.

Другим решением является рисование безупречного пикселя, что означает, что вам нужно установить размер окна просмотра на размер устройства gdx.graphics.getWidth, gdx.graphics.getHeight, другими словами a ScreenViewport и рисовать текстуры с точными размерами, которые выхочу их.Конечно, это означает, что экран с большим количеством пикселей видит больше вашего игрового мира, чем экран с меньшим количеством пикселей, и чем больше пикселей у устройства, тем меньше будут выглядеть ваши текстуры.Другим недостатком этого является то, что вы должны забыть о масштабировании или рисовании спрайтов для каждого уровня масштабирования, чтобы они снова совпали с пиксельной сеткой устройства.

...