У меня следующая ситуация:
В моей игре я рендерил карту листов из текстуры Atlas на openGL ES 1.2 на устройствах IOS или Android.
Текстурный атлас имеет отступ 2 пикселя между каждой субтекстурой. Цвет обивки черный, прозрачный.
Моя цель - поддерживать как можно больше разных разрешений экрана. В случае, если моя игра не поддерживает немасштабированное разрешение экрана, я хочу использовать масштабирование как запасную стратегию для поддержки любого разрешения экрана.
Карты тайлов выглядят идеально, пока я отрисовываю немасштабированный (масштаб = 1,0 в матрице модели). Я также могу прокрутить карту тайла очень плавно, без сбоев.
Как только я рендерим карту листов в масштабе, между плитками появляются черные полосы (черный прозрачный цвет используется в качестве цвета заливки между подтекстами в текстурном атласе), когда карта листов прокручивается.
Кажется, что по какой-то причине координаты текстуры, указанные для моих субтекстур, каким-то образом превышены при масштабном рендеринге, а цвет заливки используется частично.
Я пытаюсь найти возможную стратегию, чтобы избежать этой проблемы. Пока мне пришло в голову 2 решения:
1) изменить координаты текстуры. Добавьте половину пикселя к x и y, вычтите полный пиксель из ширины и высоты. Это работает, но визуализированные плитки нерезкие.
2) Перемещать карту тайла только на целые позиции. Работает, но прокрутка выглядит рывком.
3) Измените текстурный атлас и продублируйте все граничные пиксели, расширяя каждую субтекстуру на 1 пиксель в каждом направлении. Я еще не пробовал это, я хотел спросить, может ли это работать, прежде чем я изменю свой инструмент для упаковки текстур. (Мне кажется, я читал об этой стратегии, но больше не могу найти эту статью)
Кто-нибудь имеет опыт решения этой проблемы и может указать мне правильное направление?