Почему 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 направлена ​​вверх).

Другие вопросы по тегам