Почему OpenGL рисует вещи с ног на голову?
Я еще не видел, чтобы кто-нибудь ответил на этот вопрос. Я вижу только то, что люди говорят им, что что-то перевернуто, а потом кто-то говорит им перевернуть их код. Но что мне интересно, так это почему OpenGL переворачивает координаты Y? Это не имеет никакого смысла.
3 ответа
OpenGL предполагает координаты Y, идущие снизу вверх. Если ваш код предполагает, что обратное будет отображать вещи с ног на голову.
Для получения дополнительной информации Google для системы координат OpenGL
OpenGL работает на декартовых координатах. В декартовой системе координат 0,0 находится в центре, положительные координаты простираются вверх и вправо. Любые координаты могут быть сопоставлены или преобразованы в соответствии с пожеланиями программиста, но это значение по умолчанию. Когда вы даете текстурные координаты, OpenGL ожидает, что это будут катрезианские координаты, а не координаты сверху вниз. Эти координаты могут быть преобразованы программой, но самое быстрое решение - просто перевернуть текстуру.
Все зависит от того, как вы настроили свою сцену. Есть много вещей, которые могут вызвать этот эффект.
Например, положение / ориентация камеры влияет на то, как вы видите финальную сцену.
gluLookAt(camera[0], camera[1], camera[2], /* look from camera XYZ */
0, 0, 0, /* look at the origin */
0, 1, 0); /* positive Y up vector */
При работе с текстурами, указание неправильных координат текстуры может перевернуть рисунок.
Но наиболее распространенной проблемой могут быть люди, которые забывают, что OpenGL определяет координату (0, 0) в нижнем левом углу экрана (причем Y направлена вверх).