Я рендерю 2D-прямоугольник 960x960 (два треугольника), при этом часть моей гигантской текстуры (40x40) растягивается на многоугольник 960x960.
Я создаю текстуру следующим образом:
/>
Код: Выделить всё
glGenTextures(1, &id);
glActiveTexture(GL_TEXTURE0 + 0);
glBindTexture(GL_TEXTURE_2D, id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RG8 /* only green and red channel */, 5040, 5040, 0 /* deprecated 'border' feature */,
GL_RGBA, GL_UNSIGNED_BYTE, pixelsToUpload)
Я также отключил сглаживание, на тот случай, если это вызывало проблема.
И, как вы можете видеть по каменному мосту и моему маленькому другу-дракону, остальная часть моего рендеринга (многочисленные спрайты, элементы пользовательского интерфейса и т. д.) работает нормально.
Есть какие-нибудь подсказки, что может быть причиной этого шаблона размытия?
Возможно, я столкнулся с проблемой с точностью плавающей точки?
Я действительно хочу используйте фильтрацию GL_LINEAR, но это также выглядит странно и просто скрывает основную проблему, которую GL_NEAREST показывает более четко.
Что визуализируется:

То, что я ожидал: (макет в художественной программе)

Вот GL_LINEAR: (то, что мне в конечном итоге нужно, но также неправильно — я считаю, что GL_NEAREST лучше показывает проблему)

Подробнее здесь: https://stackoverflow.com/questions/797 ... up-texture
Мобильная версия