Логическое происхождение текстур в OpenGL - это левый нижний угол текстуры.
Ваш экран имеет высоту 480 пикселей, а текстура имеет размер 512 пикселей.Это не будет соответствовать без смещения.
Чтобы компенсировать это, вы должны нарисовать текстуру, используя смещение 32 пикселя.Давайте посмотрим, сколько: 512-480 ... вы догадались ... 32. Вот откуда берется ваше смещение.
Вы можете обойти это, изменив код загрузки текстуры, чтобы выровнять изображение поверхний левый угол текстуры.После этого вам больше не нужно смещение во время рендеринга.Вместо этого он перейдет к вашей функции загрузки текстуры.
Я бы, например, сделал это, потому что текстуры загружаются только один раз и прорисовываются совсем немного.Это делает трудный для понимания код (рисование) более читабельным.Не то чтобы такой код сложен для понимания, но по опыту я знаю, что эти коды со временем становятся запутанными и трудными для понимания..