При наложении текстуры на сферу получаю искажение на полюсах (рис. 1), швы вдоль сферы особо не видны, но если убрать GL_REPEAT
в
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
тогда и шов появляется видимый
Из-за чего это всё, я в принципе понял, проблема заключается в том, что некоторые вершины имеют координату ~0.9, а соседние с ними 0.0, из-за этого происходят большие скачки при мипмаппинге, и появляются швы/искажения
Модельки сферы импортирую при помощи библиотеки Assimp со следующими флагами
const aiScene* scene = importer.ReadFile(path, aiProcess_Triangulate | aiProcess_GenSmoothNormals | aiProcess_FlipUVs | aiProcess_CalcTangentSpace);
P.S. Хочу использовать именно двухмерные текстуры, а не кубические карты
Вот смотрите, у вас у полюсов немного неправильная развертка получается:
Как быть - делать нормальную развертку. Проще всего, наверное, найти/скачать/сделать готовую модель.
Также, у правильной модели к полюсам будут не треугольники, а прямоугольники (с дегенрирующими 2 верхними точками), зато это позволит сэмплить всю текстуру.
Также, для полюсов, может быть все же проще перейти на кубические карты - в них меньше искажений/растяжек.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
При написании курсового проекта столкнулся с проблемой: при нажатии на компонент MenuBar у меня не происходит вывод значений на компонент TableWidget...
Как правильно организовать проверку на выделение какого-либо элемента QListWidgetВ пример прилагаю мой QListWidget с таймерами - элементами списка