OpenGL ES рендерит глюки

У меня следующая ситуация:

В моей игре я рендерил карту тайлов из текстуры Atlas на openGL ES 1.2 на устройствах IOS или Android.

Текстурный атлас имеет отступ 2 пикселя между каждой субтекстурой. Цвет обивки черный, прозрачный.

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

Карты листов выглядят идеально, пока я отрисовываю немасштабированный (масштаб = 1,0 в матрице модели). Я также могу прокручивать плитку очень плавно, без сбоев.

Как только я рендерим карту листов в масштабе, между плитками появляются черные полосы (черный прозрачный цвет используется в качестве цвета заливки между подтекстами в текстурном атласе), когда карта листов прокручивается.

Кажется, что по какой-то причине координаты текстуры, указанные для моих субтекстур, как-то превышаются при масштабном рендеринге, а цвет заливки используется частично.

Я пытаюсь найти возможную стратегию, чтобы избежать этой проблемы. Пока мне пришло в голову 2 решения:

1) изменить текстурные координаты. Добавьте половину пикселя к x и y, вычтите полный пиксель из ширины и высоты. Это работает, но визуализированные плитки нерезкие.

2) Перемещайте карту тайла только на целочисленные позиции. Работает, но прокрутка выглядит рывком.

3) Измените текстурный атлас и продублируйте все граничные пиксели, расширяя каждую субтекстуру на 1 пиксель в каждом направлении. Я еще не пробовал это, я хотел спросить, может ли это работать, прежде чем я изменю свой инструмент для упаковки текстур. (Мне кажется, я читал об этой стратегии, но больше не могу найти эту статью)

Кто-нибудь имеет опыт решения этой проблемы и может указать мне правильное направление?

0 ответов

Другие вопросы по тегам