Я пытаюсь использовать координаты текстуры из предварительно сгенерированного файла PNG в трехмерном мире квадов, загруженных в Java с расширением slick-util LWJGL.
Файл текстуры имеет размер 192x96 пикселей и правильно отформатирован. Он состоит из тайлов 6x3 32x32.
Трехмерные четырехугольники имеют ширину и длину 1,5f. Они правильно разнесены.
У меня проблемы с получением правильных координат текстуры. Когда я помещаю 0.0f в 0.333333f в качестве координаты y, я получаю немного больше, чем отображаемая высота верхней плитки. Однако, если я поставлю 0.0f-0.25f, я получу ровно 1/3, что является высотой моей плитки. Мне еще предстоит найти магическое число для координаты X, но, может быть, кто-нибудь может объяснить мне, почему 1/4 от 96 составляет 24 по координатам текстур, или что я делаю неправильно? Я подозреваю, что это может быть конфликт между размером моего квадроцикла и текстурами.
Вершины кубов используют текстурные координаты (0.0, 0.0f), (0.0, 0.333333f), (0.166666f, 0.333333f), (0.166666f, 0.0f), которые применяются против часовой стрелки от верхнего левого угла к вверху справа. Опять же, основной файл текстуры представляет собой тайлы размером 32x32, расположенные так, чтобы получить 192x96 (96 – высота).
Обратите внимание, что я поместил белую линию в верхней части одной из плиток, чтобы увидеть ее границу, и черную линию внизу, а затем белую линию для верхней части следующей под ней. Текстура «кровоточит» слишком глубоко. Как видите, у других текстур есть свои, еще более странные координаты.
Упорядочивание текстурных координат с предположением, что верхняя часть изображения равна 1,0, а не нижняя, дает нечетные квадраты с прямоугольным отверстием в центре, где должны быть четырехугольники.
Я использую TEX_ENV GL_MODULATE.