Текстуры OpenGl: неправильные пиксели

У меня проблемы с использованием текстур в OpenGl (только 2D)

Я хочу показать уровень (размер 15х15), и каждое поле может иметь различное значение / рисунок.
У меня есть около 100 различных типов полей, и в соответствии с дизайном уровней я должен отображать разные изображения для каждого типа.
Если я использую один tga-Image для каждого возможного поля (100 файлов), все работает нормально,
но теперь я собираю все изображения в один файл и, в зависимости от типа поля, я всегда показываю другую часть изображения.

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

Есть ли способ легко решить эту проблему?
(Может быть, мне нужно загрузить tga-изображение в один GLuint, а затем разделить его на 100 различных GLunint? Или есть настройка для улучшения рендеринга? Или мне нужно изменить разрешение самого файла tga-image?)

Вот часть моего файла изображения, каждый элемент имеет разрешение 220×220 пикселей -> вся картинка: 2200×2200 пикселей
Sprite-изображения

И это OpenGl-вывод:
OpenGl-выход

Я действительно не хочу иметь сотни изображений. Тем более, что загрузка всех этих файлов занимает много времени, и я уверен, что есть решение

РЕДАКТИРОВАТЬ:

Я использую следующие настройки:

// Specify filtering and edge actions
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);

EDIT2:

Теперь я изменил GL_LINEAR на GL_NEAREST и добавил половину текселя в текстурных координатах, между изображениями больше нет линий 🙂
Но у меня все еще есть другая проблема:
пиксель-ошибка
Небольшие элементы (линии) на изображении отображаются неправильно.
Вот как это должно выглядеть:
howitshouldlook

2

Решение

«Имейте в виду, что OpenGL пробует текстуры в текстовых центрах»

Посмотрите на ответ здесь:
Слегка выключены координаты текстуры OpenGL ES

2

Другие решения

Вам нужно добавить отступающие пиксели к вашим текстурам, чтобы избежать линий по их краям. Таким образом, когда OpenGL выбирает пиксели из текстуры для рисования (включая уровни mipmap, если вы отображаете их в меньшем размере, чем они есть в ваших файлах), не используются пиксели неправильно окрашенных.

0

По вопросам рекламы [email protected]