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

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

0 голосов
/ 22 января 2012

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

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

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

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

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

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...