Как использовать glOrtho () в OpenGL?

Я не могу понять использование glOrtho. Кто-то может объяснить, для чего это используется?

Это используется для установки диапазона x y и предела координат z?

glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);

Это означает, что x, y и диапазон z от-1 до 1?

78
задан Ciro Santilli 新疆改造中心法轮功六四事件 11 March 2018 в 10:26
поделиться

2 ответа

Посмотрите на это изображение: Графические проекции enter image description here

Команда glOrtho создает "наклонную" проекцию, которую вы см. в нижнем ряду. Независимо от того, насколько далеко вершины находятся в направлении z, они не уйдут вдаль.

Я использую glOrtho каждый раз, когда мне нужно создать 2D-графику в OpenGL (например, панели состояния, меню и т. Д.) , используя следующий код каждый раз при изменении размера окна:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f, windowWidth, windowHeight, 0.0f, 0.0f, 1.0f);

Это изменит отображение координат OpenGL в эквивалентные значения пикселей (X от 0 до windowWidth и Y от 0 до windowHeight). Обратите внимание, что я перевернул значения Y, потому что координаты OpenGL начинаются с нижнего левого угла окна. Таким образом, переворачивая, я получаю более обычное (0,0), начинающееся скорее в верхнем левом углу окна.

Обратите внимание, что значения Z отсекаются от 0 до 1. Так что будьте осторожны, когда вы указываете значение Z для положения вашей вершины, оно будет обрезано, если выйдет за пределы этого диапазона. В противном случае, если он находится внутри этого диапазона, он не повлияет на положение, за исключением Z-тестов.

139
ответ дан 24 November 2019 в 10:29
поделиться

glOrtho описывает преобразование, которое создает параллельную проекцию. Текущая матрица (см. GlMatrixMode) умножается на эту матрицу, и результат заменяет текущую матрицу, как если бы glMultMatrix был вызван со следующей матрицей в качестве аргумента:

Документация OpenGL (выделено жирным шрифтом)

Числа определите расположение плоскостей отсечения (левая, правая, нижняя, верхняя, ближняя и дальняя).

«Нормальная» проекция - это перспективная проекция, обеспечивающая иллюзию глубины. В Википедии параллельная проекция определяется как:

Параллельные проекции имеют линии проекции, которые параллельны как в реальности, так и в плоскости проекции.

Параллельная проекция соответствует перспективной проекции с гипотетической точкой обзора - например, такой, в которой камера находится на бесконечном расстоянии от объекта и имеет бесконечное фокусное расстояние, или «масштабирование».

4
ответ дан 24 November 2019 в 10:29
поделиться