Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Мерцание, полосы, стыки на тайловой карте.

Мерцание, полосы, стыки на тайловой карте.

Поделиться
HagalazПостоялецwww18 фев. 201713:35#0
Добрый день, делаю небольшую игру на libGDX с тайловой картой нарисованной в Tiled. Когда загружаю карту и запуская игру при перемещении камеры вправо, между тафлами на стыках появляются черные вертикальные полосы. Погуглил и нашел следующее:
gamecam.position.x = Math.round(gamecam.position.x/S)*S;
gamecam.position.y = Math.round(gamecam.position.y/S)*S;
Этот код нужно добавить перед
gamecam.update();
где S у меня 0.004f. При дефолтовом экране 800х416 это помогло и полосы исчезли, но если развернуть окно на весь экран, то полосы все равно появляются. Пытался варьироваться значение переменной S - не помогло.

Так же читал что можно делал padding в самих тайлах, но я не совсем понимаю как это сделать и как потом грузить тайлы в Tiled с отступами получается или как?
Если кто сталкивался или знает как убрать эту проблему программно или при создании самого тайлсета, поделитесь инфой пожалуйста.

gambit_ozПостоялецwww18 фев. 201715:26#1
а переменные x,y position типа float ? попробуй заменить переменные x,y на тип double
HagalazПостоялецwww20 фев. 201723:42#2
Эти переменные в libGDX определены как float
VitorioПостоялецwww21 фев. 20179:11#3
Hagalaz
> Если кто сталкивался или знает как убрать эту проблему программно или при
> создании самого тайлсета, поделитесь инфой пожалуйста.
Паддинг скорее всего поможет решить проблему. Из-за того что тексели тайлов не попадают 1 в 1 в физические пиксели экрана, происходит интерполирование (билинейная/трилинейная/анизотропная фильтрация), которое захватывает тексели соседних тайлов - отсюда и полосы. Перед тем как делать паддинг, отключи фильтрацию текстур - сделай Nearest Point, если полосы исчезнут, значит надо делать паддинг. Если нет, то необходимо изменить режим смешения цветов (blending function) с GL_SRC_ALPHA на GL_ONE и перейти на premultiplied alpha (если у тебя есть полупрозрачность в тайлах).

Насколько я помню, при загрузке карты тайлов в tiled, можно указать величину расстояния между тайлами, он поддерживает эту функцию.

SuslikМодераторwww21 фев. 201716:00#4
можно попробовать не вилами по воде шурудить, а для разнообразия посмотреть координаты вершин соседних тайлов. gpu pipeline гарантирует, что если координаты двух вершин двух треугольников совпадают, то шва не будет видно. ещё можно тайловый меш нарисовать без текстуры, чтобы узнать, в нём ли проблема, ибо проблема может быть вообще текстурном атласе, где из-за фильтрации граничные тексели друг на друга наезжают.

Правка: 21 фев. 2017 16:02

andreyuПостоялецwww25 мая 201715:58#5
Clamp to edge и/или дублирование пикселей по краю спрайта.
OxydПользовательwww25 мая 201717:16#6
для теста отключи текстурную фильтрацию и посмотри на результат. Интересует остаются щели или нет.

Правка: 25 мая 2017 17:17

/ Форум / Программирование игр / 2D графика и изометрия

2001—2017 © GameDev.ru — Разработка игр