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