Ручной GL_REPEAT в GLSL - PullRequest
       11

Ручной GL_REPEAT в GLSL

2 голосов
/ 19 ноября 2010

В настоящее время у меня есть текстурный атлас размером 2048 x 2048 пикселей с тремя сохраненными текстурами 512 x 512, и я применяю только одну текстуру к объекту.Поэтому я использовал следующий код для позиционирования координат текстуры (от нуля до 1) в правильное положение на текстурном атласе для этой текстуры:

color = texture2D(tex_0, vec2(0.0, 1024.0/2048.0) + mod(texture_coordinate*vec2(40.0), vec2(1.0))*vec2(512.0/2048.0));

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

Так как мне избавиться от границы?

Редактировать * Я уже пыталсяпереместите начальную и конечную границы к центру текстуры, и это не сработало.

Правка * Я нашел источник проблемы, автоматическое создание mipmap смешивает текстуры в атласе текстуры.Это означает, что я должен написать свою собственную функцию отображения.(Насколько я могу судить)

Если у кого-то есть идеи получше, пожалуйста, пишите.

1 Ответ

1 голос
/ 27 ноября 2010

Вместо использования обычной 2D-текстуры в качестве атласа текстуры с сеткой текстур, я использовал функциональность GL_2D_TEXTURE_ARRAY для создания 3D-текстуры, которая правильно отображалась и повторялась правильно.Таким образом, текстуры не смешивались вместе на более высоких уровнях mipmap.

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